{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# How to use decision trees to predict equity returns and price moves"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this notebook, we illustrate how to use tree-based models to gain insight and make predictions. \n",
    "\n",
    "To demonstrate regression trees we predict returns, and for the classification case, we return to the example of positive and negative asset price moves."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports & Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:25.073686Z",
     "start_time": "2020-06-22T15:34:25.071746Z"
    }
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:29.765810Z",
     "start_time": "2020-06-22T15:34:28.944912Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import os, sys\n",
    "from pathlib import Path\n",
    "\n",
    "import numpy as np\n",
    "from scipy.stats import spearmanr\n",
    "import pandas as pd\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FuncFormatter\n",
    "from matplotlib import cm\n",
    "import seaborn as sns\n",
    "\n",
    "from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor, export_graphviz, _tree\n",
    "from sklearn.linear_model import LinearRegression, LogisticRegression\n",
    "from sklearn.model_selection import train_test_split, GridSearchCV, learning_curve\n",
    "from sklearn.metrics import roc_auc_score, roc_curve, mean_squared_error, make_scorer\n",
    "import graphviz\n",
    "\n",
    "import statsmodels.api as sm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:29.769840Z",
     "start_time": "2020-06-22T15:34:29.766901Z"
    }
   },
   "outputs": [],
   "source": [
    "sys.path.insert(1, os.path.join(sys.path[0], '..'))\n",
    "from utils import MultipleTimeSeriesCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:30.949588Z",
     "start_time": "2020-06-22T15:34:30.947452Z"
    }
   },
   "outputs": [],
   "source": [
    "sns.set_style('white')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:36.597184Z",
     "start_time": "2020-06-22T15:34:36.594314Z"
    }
   },
   "outputs": [],
   "source": [
    "results_path = Path('results', 'decision_trees')\n",
    "if not results_path.exists():\n",
    "    results_path.mkdir(parents=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Model Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We use a simplified version of the data set constructed in Chapter 4, Alpha factor research. It consists of daily stock prices provided by Quandl for the 2010-2017 period and various engineered features. The details can be found in the notebook [data_prep](00_data_prep.ipynb) in the GitHub repo for this chapter."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The decision tree models in this chapter are not equipped to handle missing or categorical variables, so we will apply dummy encoding to the latter after dropping any of the former."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:43.815743Z",
     "start_time": "2020-06-22T15:34:43.718590Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 56756 entries, ('A', Timestamp('2010-12-31 00:00:00')) to ('ZION', Timestamp('2017-11-30 00:00:00'))\n",
      "Data columns (total 27 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   atr            56756 non-null  float64\n",
      " 1   bb_down        56756 non-null  float64\n",
      " 2   bb_high        56756 non-null  float64\n",
      " 3   bb_low         56756 non-null  float64\n",
      " 4   bb_mid         56756 non-null  float64\n",
      " 5   bb_up          56756 non-null  float64\n",
      " 6   macd           56756 non-null  float64\n",
      " 7   natr           56756 non-null  float64\n",
      " 8   rsi            56756 non-null  float64\n",
      " 9   sector         56756 non-null  object \n",
      " 10  return_1m      56756 non-null  float64\n",
      " 11  return_3m      56756 non-null  float64\n",
      " 12  return_6m      56756 non-null  float64\n",
      " 13  return_12m     56756 non-null  float64\n",
      " 14  beta           56756 non-null  float64\n",
      " 15  SMB            56756 non-null  float64\n",
      " 16  HML            56756 non-null  float64\n",
      " 17  RMW            56756 non-null  float64\n",
      " 18  CMA            56756 non-null  float64\n",
      " 19  momentum_3     56756 non-null  float64\n",
      " 20  momentum_6     56756 non-null  float64\n",
      " 21  momentum_3_6   56756 non-null  float64\n",
      " 22  momentum_12    56756 non-null  float64\n",
      " 23  momentum_3_12  56756 non-null  float64\n",
      " 24  year           56756 non-null  int64  \n",
      " 25  month          56756 non-null  int64  \n",
      " 26  target         56756 non-null  float64\n",
      "dtypes: float64(24), int64(2), object(1)\n",
      "memory usage: 12.0+ MB\n"
     ]
    }
   ],
   "source": [
    "with pd.HDFStore('data.h5') as store:\n",
    "    data = store['us/equities/monthly']\n",
    "data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simple Regression Tree with Time Series Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Regression trees make predictions based on the mean outcome value for the training samples assigned to a given node and typically rely on the mean-squared error to select optimal rules during recursive binary splitting.\n",
    "\n",
    "Given a training set, the algorithm iterates over the predictors, $X_1, X_2, ..., X_p$, and possible cutpoints, $s_1, s_2, ..., s_N$, to find an optimal combination. The optimal rule splits the feature space into two regions, $\\{X\\mid X_i < s_j\\}$ and $\\{X\\mid X_i > s_j\\}$, with values for the $X_i$ feature either below or above the $s_j$ threshold so that predictions based on the training subsets maximize the reduction of the squared residuals relative to the current node."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Generate two lags of monthly returns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:45.988150Z",
     "start_time": "2020-06-22T15:34:45.966503Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 56186 entries, ('A', Timestamp('2011-01-31 00:00:00')) to ('ZION', Timestamp('2017-11-30 00:00:00'))\n",
      "Data columns (total 3 columns):\n",
      " #   Column  Non-Null Count  Dtype  \n",
      "---  ------  --------------  -----  \n",
      " 0   y       56186 non-null  float64\n",
      " 1   t-1     56186 non-null  float64\n",
      " 2   t-2     56186 non-null  float64\n",
      "dtypes: float64(3)\n",
      "memory usage: 1.5+ MB\n"
     ]
    }
   ],
   "source": [
    "X2 = data.loc[:, ['target', 'return_1m']]\n",
    "X2.columns = ['y', 't-1']\n",
    "X2['t-2'] = data.groupby(level='ticker').return_1m.shift()\n",
    "X2 = X2.dropna()\n",
    "X2.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:46.161136Z",
     "start_time": "2020-06-22T15:34:46.157413Z"
    }
   },
   "outputs": [],
   "source": [
    "y2 = X2.y\n",
    "X2 = X2.drop('y', axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Explore Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note the small spike where we clipped the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:47.661138Z",
     "start_time": "2020-06-22T15:34:47.378831Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(y2)\n",
    "sns.despine();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Configure Tree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start with a simplified example to facilitate visualization and only use two months of lagged returns to predict the following month, in the vein of an AR(2) model from the last chapter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:50.576874Z",
     "start_time": "2020-06-22T15:34:50.573561Z"
    }
   },
   "outputs": [],
   "source": [
    "reg_tree_t2 = DecisionTreeRegressor(criterion='mse',\n",
    "                                    splitter='best',\n",
    "                                    max_depth=6,\n",
    "                                    min_samples_split=2,\n",
    "                                    min_samples_leaf=50,\n",
    "                                    min_weight_fraction_leaf=0.0,\n",
    "                                    max_features=None,\n",
    "                                    random_state=42,\n",
    "                                    max_leaf_nodes=None,\n",
    "                                    min_impurity_decrease=0.0,\n",
    "                                    min_impurity_split=None,\n",
    "                                    presort=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train Decision Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:57.609925Z",
     "start_time": "2020-06-22T15:34:51.409222Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "77 ms ± 4.31 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "reg_tree_t2.fit(X=X2, y=y2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:34:57.701375Z",
     "start_time": "2020-06-22T15:34:57.611614Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeRegressor(max_depth=6, min_samples_leaf=50, presort=False,\n",
       "                      random_state=42)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg_tree_t2.fit(X=X2, y=y2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize Tree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can visualize the tree using the graphviz library (see GitHub for installation instructions) because sklearn can output a description of the tree using the .dot language used by that library. \n",
    "\n",
    "You can configure the output to include feature and class labels and limit the number of levels to keep the chart readable, as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-22T15:35:27.132012Z",
     "start_time": "2020-06-22T15:35:27.047144Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.42.3 (20191010.1750)\n",
       " -->\n",
       "<!-- Title: Tree Pages: 1 -->\n",
       "<svg width=\"590pt\" height=\"356pt\"\n",
       " viewBox=\"0.00 0.00 590.00 356.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 352)\">\n",
       "<title>Tree</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-352 586,-352 586,4 -4,4\"/>\n",
       "<!-- 0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"#f0b78e\" stroke=\"black\" d=\"M335.5,-348C335.5,-348 238.5,-348 238.5,-348 232.5,-348 226.5,-342 226.5,-336 226.5,-336 226.5,-292 226.5,-292 226.5,-286 232.5,-280 238.5,-280 238.5,-280 335.5,-280 335.5,-280 341.5,-280 347.5,-286 347.5,-292 347.5,-292 347.5,-336 347.5,-336 347.5,-342 341.5,-348 335.5,-348\"/>\n",
       "<text text-anchor=\"start\" x=\"252\" y=\"-332.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;1 ≤ &#45;0.264</text>\n",
       "<text text-anchor=\"start\" x=\"249\" y=\"-317.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.008</text>\n",
       "<text text-anchor=\"start\" x=\"234.5\" y=\"-302.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 56186</text>\n",
       "<text text-anchor=\"start\" x=\"246\" y=\"-287.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.009</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"#f5cdb1\" stroke=\"black\" d=\"M262,-244C262,-244 180,-244 180,-244 174,-244 168,-238 168,-232 168,-232 168,-188 168,-188 168,-182 174,-176 180,-176 180,-176 262,-176 262,-176 268,-176 274,-182 274,-188 274,-188 274,-232 274,-232 274,-238 268,-244 262,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"186\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ &#45;0.172</text>\n",
       "<text text-anchor=\"start\" x=\"183\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.034</text>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 545</text>\n",
       "<text text-anchor=\"start\" x=\"177.5\" y=\"-183.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.028</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>0&#45;&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M265.57,-279.88C259.98,-271.24 253.88,-261.82 248.04,-252.79\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"250.92,-250.79 242.55,-244.3 245.04,-254.6 250.92,-250.79\"/>\n",
       "<text text-anchor=\"middle\" x=\"237.31\" y=\"-265.04\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n",
       "</g>\n",
       "<!-- 16 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>16</title>\n",
       "<path fill=\"#f0b78d\" stroke=\"black\" d=\"M401.5,-244C401.5,-244 304.5,-244 304.5,-244 298.5,-244 292.5,-238 292.5,-232 292.5,-232 292.5,-188 292.5,-188 292.5,-182 298.5,-176 304.5,-176 304.5,-176 401.5,-176 401.5,-176 407.5,-176 413.5,-182 413.5,-188 413.5,-188 413.5,-232 413.5,-232 413.5,-238 407.5,-244 401.5,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"320\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;1 ≤ 0.299</text>\n",
       "<text text-anchor=\"start\" x=\"315\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"300.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 55641</text>\n",
       "<text text-anchor=\"start\" x=\"312\" y=\"-183.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.009</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;16 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>0&#45;&gt;16</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M308.43,-279.88C314.02,-271.24 320.12,-261.82 325.96,-252.79\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"328.96,-254.6 331.45,-244.3 323.08,-250.79 328.96,-254.6\"/>\n",
       "<text text-anchor=\"middle\" x=\"336.69\" y=\"-265.04\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"#eda977\" stroke=\"black\" d=\"M138,-140C138,-140 56,-140 56,-140 50,-140 44,-134 44,-128 44,-128 44,-84 44,-84 44,-78 50,-72 56,-72 56,-72 138,-72 138,-72 144,-72 150,-78 150,-84 150,-84 150,-128 150,-128 150,-134 144,-140 138,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"62\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ &#45;0.248</text>\n",
       "<text text-anchor=\"start\" x=\"62.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.04</text>\n",
       "<text text-anchor=\"start\" x=\"52\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 166</text>\n",
       "<text text-anchor=\"start\" x=\"56\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.032</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M180.74,-175.88C169.48,-166.62 157.12,-156.45 145.44,-146.85\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"147.43,-143.95 137.48,-140.3 142.98,-149.36 147.43,-143.95\"/>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>5</title>\n",
       "<path fill=\"#f8deca\" stroke=\"black\" d=\"M262,-140C262,-140 180,-140 180,-140 174,-140 168,-134 168,-128 168,-128 168,-84 168,-84 168,-78 174,-72 180,-72 180,-72 262,-72 262,-72 268,-72 274,-78 274,-84 274,-84 274,-128 274,-128 274,-134 268,-140 262,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"186\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ &#45;0.022</text>\n",
       "<text text-anchor=\"start\" x=\"186.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.03</text>\n",
       "<text text-anchor=\"start\" x=\"176\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 379</text>\n",
       "<text text-anchor=\"start\" x=\"177.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.054</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;5 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>1&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M221,-175.88C221,-167.78 221,-158.98 221,-150.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"224.5,-150.3 221,-140.3 217.5,-150.3 224.5,-150.3\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M42,-36C42,-36 12,-36 12,-36 6,-36 0,-30 0,-24 0,-24 0,-12 0,-12 0,-6 6,0 12,0 12,0 42,0 42,0 48,0 54,-6 54,-12 54,-12 54,-24 54,-24 54,-30 48,-36 42,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M70.14,-72C62.66,-62.81 54.65,-52.97 47.59,-44.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"50.19,-41.95 41.17,-36.4 44.76,-46.37 50.19,-41.95\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M114,-36C114,-36 84,-36 84,-36 78,-36 72,-30 72,-24 72,-24 72,-12 72,-12 72,-6 78,0 84,0 84,0 114,0 114,0 120,0 126,-6 126,-12 126,-12 126,-24 126,-24 126,-30 120,-36 114,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M97.77,-72C97.96,-63.56 98.17,-54.59 98.36,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"101.86,-46.48 98.6,-36.4 94.86,-46.32 101.86,-46.48\"/>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>6</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M200,-36C200,-36 170,-36 170,-36 164,-36 158,-30 158,-24 158,-24 158,-12 158,-12 158,-6 164,0 170,0 170,0 200,0 200,0 206,0 212,-6 212,-12 212,-12 212,-24 212,-24 212,-30 206,-36 200,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"185\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;6 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M207.18,-72C203.54,-63.28 199.64,-53.98 196.16,-45.65\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"199.38,-44.28 192.29,-36.4 192.92,-46.98 199.38,-44.28\"/>\n",
       "</g>\n",
       "<!-- 11 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>11</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M272,-36C272,-36 242,-36 242,-36 236,-36 230,-30 230,-24 230,-24 230,-12 230,-12 230,-6 236,0 242,0 242,0 272,0 272,0 278,0 284,-6 284,-12 284,-12 284,-24 284,-24 284,-30 278,-36 272,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"257\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 5&#45;&gt;11 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>5&#45;&gt;11</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M234.82,-72C238.46,-63.28 242.36,-53.98 245.84,-45.65\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"249.08,-46.98 249.71,-36.4 242.62,-44.28 249.08,-46.98\"/>\n",
       "</g>\n",
       "<!-- 17 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>17</title>\n",
       "<path fill=\"#f0b78e\" stroke=\"black\" d=\"M401.5,-140C401.5,-140 304.5,-140 304.5,-140 298.5,-140 292.5,-134 292.5,-128 292.5,-128 292.5,-84 292.5,-84 292.5,-78 298.5,-72 304.5,-72 304.5,-72 401.5,-72 401.5,-72 407.5,-72 413.5,-78 413.5,-84 413.5,-84 413.5,-128 413.5,-128 413.5,-134 407.5,-140 401.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"318\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;1 ≤ &#45;0.098</text>\n",
       "<text text-anchor=\"start\" x=\"315\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"300.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 55155</text>\n",
       "<text text-anchor=\"start\" x=\"312\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.009</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;17 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>16&#45;&gt;17</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M353,-175.88C353,-167.78 353,-158.98 353,-150.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"356.5,-150.3 353,-140.3 349.5,-150.3 356.5,-150.3\"/>\n",
       "</g>\n",
       "<!-- 46 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>46</title>\n",
       "<path fill=\"#eca36f\" stroke=\"black\" d=\"M526,-140C526,-140 444,-140 444,-140 438,-140 432,-134 432,-128 432,-128 432,-84 432,-84 432,-78 438,-72 444,-72 444,-72 526,-72 526,-72 532,-72 538,-78 538,-84 538,-84 538,-128 538,-128 538,-134 532,-140 526,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"452\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ 0.023</text>\n",
       "<text text-anchor=\"start\" x=\"447\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.026</text>\n",
       "<text text-anchor=\"start\" x=\"440\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 486</text>\n",
       "<text text-anchor=\"start\" x=\"444\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.041</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;46 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>16&#45;&gt;46</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M395.86,-175.88C407.96,-166.53 421.25,-156.26 433.79,-146.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"436.13,-149.18 441.91,-140.3 431.85,-143.64 436.13,-149.18\"/>\n",
       "</g>\n",
       "<!-- 18 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>18</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M351,-36C351,-36 321,-36 321,-36 315,-36 309,-30 309,-24 309,-24 309,-12 309,-12 309,-6 315,0 321,0 321,0 351,0 351,0 357,0 363,-6 363,-12 363,-12 363,-24 363,-24 363,-30 357,-36 351,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"336\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;18 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>17&#45;&gt;18</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M346.48,-72C344.81,-63.56 343.04,-54.59 341.43,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"344.81,-45.53 339.44,-36.4 337.95,-46.89 344.81,-45.53\"/>\n",
       "</g>\n",
       "<!-- 33 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>33</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M423,-36C423,-36 393,-36 393,-36 387,-36 381,-30 381,-24 381,-24 381,-12 381,-12 381,-6 387,0 393,0 393,0 423,0 423,0 429,0 435,-6 435,-12 435,-12 435,-24 435,-24 435,-30 429,-36 423,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"408\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;33 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>17&#45;&gt;33</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M374.11,-72C379.86,-63 386.01,-53.38 391.47,-44.84\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"394.43,-46.71 396.87,-36.4 388.53,-42.94 394.43,-46.71\"/>\n",
       "</g>\n",
       "<!-- 47 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>47</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M498,-36C498,-36 468,-36 468,-36 462,-36 456,-30 456,-24 456,-24 456,-12 456,-12 456,-6 462,0 468,0 468,0 498,0 498,0 504,0 510,-6 510,-12 510,-12 510,-24 510,-24 510,-30 504,-36 498,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"483\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 46&#45;&gt;47 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>46&#45;&gt;47</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M484.23,-72C484.04,-63.56 483.83,-54.59 483.64,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"487.14,-46.32 483.4,-36.4 480.14,-46.48 487.14,-46.32\"/>\n",
       "</g>\n",
       "<!-- 54 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>54</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M570,-36C570,-36 540,-36 540,-36 534,-36 528,-30 528,-24 528,-24 528,-12 528,-12 528,-6 534,0 540,0 540,0 570,0 570,0 576,0 582,-6 582,-12 582,-12 582,-24 582,-24 582,-30 576,-36 570,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"555\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 46&#45;&gt;54 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>46&#45;&gt;54</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M511.86,-72C519.34,-62.81 527.35,-52.97 534.41,-44.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"537.24,-46.37 540.83,-36.4 531.81,-41.95 537.24,-46.37\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7fe7a90a6990>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out_file = results_path / 'reg_tree_t2.dot'\n",
    "dot_data = export_graphviz(reg_tree_t2,\n",
    "                          out_file=out_file.as_posix(),\n",
    "                          feature_names=X2.columns,\n",
    "                          max_depth=2,\n",
    "                          filled=True,\n",
    "                          rounded=True,\n",
    "                          special_characters=True)\n",
    "if out_file is not None:\n",
    "    dot_data = Path(out_file).read_text()\n",
    "\n",
    "graphviz.Source(dot_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compare with Linear Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The OLS summary below and a visualization of the first two levels of the decision tree above reveal the striking differences between the models. The OLS model provides three parameters for the intercepts and the two features in line with the linear assumption.\n",
    "\n",
    "In contrast, the regression tree chart above displays for each node of the first two levels the feature and threshold used to split the data (note that features can be used repeatedly), as well as the current value of the mean-squared error (MSE), the number of samples, and predicted value based on these training samples."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The tree chart also highlights the uneven distribution of samples across the nodes as the numbers vary between 31,000 and 65,000 samples after only two splits."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### statsmodels OLS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:11.195947Z",
     "start_time": "2020-06-19T13:47:11.187300Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "ols_model = sm.OLS(endog=y2, exog=sm.add_constant(X2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:13.199881Z",
     "start_time": "2020-06-19T13:47:11.197211Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24.5 µs ± 966 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "ols_model.fit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:13.214533Z",
     "start_time": "2020-06-19T13:47:13.201234Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                      y   R-squared:                       0.001\n",
      "Model:                            OLS   Adj. R-squared:                  0.001\n",
      "Method:                 Least Squares   F-statistic:                     39.02\n",
      "Date:                Fri, 19 Jun 2020   Prob (F-statistic):           1.17e-17\n",
      "Time:                        09:47:13   Log-Likelihood:                 56967.\n",
      "No. Observations:               56186   AIC:                        -1.139e+05\n",
      "Df Residuals:                   56183   BIC:                        -1.139e+05\n",
      "Df Model:                           2                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const          0.0088      0.000     23.412      0.000       0.008       0.009\n",
      "t-1            0.0327      0.004      7.761      0.000       0.024       0.041\n",
      "t-2           -0.0187      0.004     -4.437      0.000      -0.027      -0.010\n",
      "==============================================================================\n",
      "Omnibus:                     2103.126   Durbin-Watson:                   1.999\n",
      "Prob(Omnibus):                  0.000   Jarque-Bera (JB):             6483.607\n",
      "Skew:                           0.018   Prob(JB):                         0.00\n",
      "Kurtosis:                       4.664   Cond. No.                         11.5\n",
      "==============================================================================\n",
      "\n",
      "Warnings:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
     ]
    }
   ],
   "source": [
    "result = ols_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### sklearn Linear Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:13.219713Z",
     "start_time": "2020-06-19T13:47:13.215511Z"
    }
   },
   "outputs": [],
   "source": [
    "lin_reg = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.364342Z",
     "start_time": "2020-06-19T13:47:13.220745Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.59 ms ± 24.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "lin_reg.fit(X=X2,y=y2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.371795Z",
     "start_time": "2020-06-19T13:47:15.365367Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.fit(X=X2,y=y2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.384111Z",
     "start_time": "2020-06-19T13:47:15.372730Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.00875544119630164"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.intercept_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.393073Z",
     "start_time": "2020-06-19T13:47:15.385065Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.03269516, -0.01868576])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear Regression vs Regression Tree Decision Surfaces"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To further illustrate the different assumptions about the functional form of the relationships between the input variables and the output, we can visualize current return predictions as a function of the feature space, that is, as a function of the range of values for the lagged returns. The following figure shows the current period return as a function of returns one and two periods ago for linear regression and the regression tree:\n",
    "\n",
    "The linear-regression model result on the right side underlines the linearity of the relationship between lagged and current returns, whereas the regression tree chart on the left illustrates the non-linear relationship encoded in the recursive partitioning of the feature space."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.412694Z",
     "start_time": "2020-06-19T13:47:15.393993Z"
    }
   },
   "outputs": [],
   "source": [
    "t1, t2 = np.meshgrid(np.linspace(X2['t-1'].quantile(.01), X2['t-1'].quantile(.99), 100),\n",
    "                     np.linspace(X2['t-2'].quantile(.01), X2['t-2'].quantile(.99), 100))\n",
    "X_data = np.c_[t1.ravel(), t2.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.864349Z",
     "start_time": "2020-06-19T13:47:15.413913Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA08AAAFkCAYAAAD4ygDGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdfVhUdeL//xcwjjcM4c0a+cuwpHDtRrmx2laxxMgydUvUQY1uJLvTNfuYiuYNH++gTd0tCzPLaskUU3KjWrdFLZKsj1hYbuomGamZUoE6YA445/eHX+eEggrCAMPzcV17Xcx5z5nzPrT57uXrzDk+hmEYAgAAAACclW99TwAAAAAAGgPCEwAAAACcB8ITAAAAAJwHwhMAAAAAnAfCEwAAAACcB8ITAAAAAJwHwhMAeJHo6Gh16dJFXbp00e9//3uFh4crLi5OH3/8ca18/meffaYuXbqovLz8rO/bt2+funTpooKCglo57um+/vprjR49WpGRkQoLC9OwYcP0z3/+84I+0+FwaMSIEbruuuv017/+tZZmCgDwJpb6ngAAoHYlJiZqwIABcrlcOnz4sNauXauHH35YL7/8sv74xz9e0GeHh4dr06ZNsljOvnx06NBBmzZtUtu2bS/oeJU5ePCg7r33XsXHxysxMVF+fn768MMPNWHCBDVr1ky33nprjT539erVKigo0Nq1a9WuXbtanjUAwBsQngDAy9hsNrVv316SFBQUpEmTJqmwsFDJycnKzMy8oM+2Wq3uzz4bPz+/83pfTXzwwQe65JJL9Pjjj7u33X///fr666+1YsWKGocnh8Ohyy67TCEhIbU1VQCAl+GyPQBoAux2u/773/+6L6M7evSoJk+erMjISPXs2VPTp0+Xw+Fwv//rr7/WPffco+7du6tv375avXq1pDMv21u+fLn69u2r6667TgMHDtTGjRslnXnZ3uHDhzV9+nT98Y9/VEREhCZMmKDi4mL3Z/bu3Vvp6enq3bu3brzxRk2cOFG//vprpefi4+OjH374Qd9++22F7ZMnT9acOXMqnad0spF78sknJUmLFi3SI488ovj4eF1//fXq2bOnFi1apC+++EJdunTRvn37dOjQIY0bN07XX3+9rr32Wt11113asmWL+/P27t2rhx9+WOHh4erdu7defPFF99iPP/6o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qVMn3X///UpISNBVV12lxYsX1+j8wsPDlZaWpqKiIo0ePVp33HGHnnnmGcXGxup//ud/JJ38ztTs2bO1fv16DRgwQNu3b9e999573se45JJLlJSUpFdffVV33nmnlixZomnTpqlZs2basWOH/Pz8lJqaqsOHD+vuu+9WUlKSxowZo/79+7vH/Pz8FBcXp0ceeUQ9evRw30Z95MiRGjx4sKZMmaI77rhD69ev15IlSxQYGFij3wcAwHN8jKouKgcAAAAAuNE8AQAAAMB5IDwBAAAAwHkgPAEAAADAeeA5T6g1+/bt08CBA/XFF1+cMfbss8+qU6dOuuuuuzw6p4yMDM2dO1cdO3aUdPIWww6HQz169NDs2bPP+pyX+vLUU0/pzjvvrPRL9wCAutWlSxeFhobK19dXPj4+OnbsmGw2m5KSknTdddfV9/TOsH79em3evFnTpk274M8aN26cCgoKJEk7d+50/x4uuugipaWlXfDnA96AG0ag1pwtPNWXjIwM/etf/6rwsMrjx49r+PDhGjZsmOLi4upxdgCAhqZLly7avHmz2rZt6972yiuv6IMPPlB6eno9zsyzKvs9AKB5gockJibqqquuUkJCgq677jo99NBDysnJ0aFDh/Tggw9qxIgRkqS33npLK1askMvlUuvWrTV9+nSFhIRoz549mjVrlkpKSlRYWKjf//73+tvf/qbmzZvr2muvVd++fbVz507Nnz//nH8zWFxcLIfD4b4t8MGDBzVr1iwdOHBAZWVluvPOO/XII49IOhm+XnrpJbVo0UJ/+MMf9Pe//11ff/21Fi1apLy8PB06dEhdunTR/PnztXjxYn3wwQdyuVy69NJLNXPmTAUFBemDDz7Q4sWL5ePjIz8/P02aNEnXX399ldvj4+M1cuRI3X777crKytLzzz8vl8slf39/TZkyRd26ddOiRYu0f/9+FRYWav/+/QoKCtIzzzyjiy++uG7/QQJAE1NeXq4DBw5UuJV8VX/eFxQUaOrUqTp8+LDat28vwzA0aNAg3XDDDRo5cqRCQkK0f/9+paWlad++fZo/f76OHTsmX19fjR07Vn369FFhYaEmT56soqIiSdLNN9+s8ePHV7n9t39J+OOPPyopKUn79++XYRi666679OCDD2rfvn26//77dfPNN2vbtm06cuSIJk6cqJiYmPP+PSQmJqq4uFh7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dtntdkmSw+GQzWZzj/n5+am8vFwWi0UOh0MBAebx/P395XA4qtzn8ssv16xZs7R48WIFBAToxhtvrMlp1hjrFgCgrlUZnu6//3717dvXvXBarVa98sorysrK8tjkcG60TiaCk4nghN9q06aNMjIyKh2z2WwqKTFvvONyudyN0eljJSUlCggIqHKfuXPnavny5brqqqu0fPlypaSkaObMmXV0Vmdi3QJO2nagVN07tKrvaQBe6azXVFx22WXun8ePH6+//e1vuvXWW2t0oJp8KRkALpS3tE51JSIiQhs3blT//v2Vl5en0NBQ91hISIgKCgpUXFysVq1aKTc3VwkJCfLx8al0n8DAQHcjdfHFF+vzzz/3+PmwbgEnbTtQWt9TALzSeV+Q/vPPP1/QgX77BeO8vDylpKRo8eLFkswvJa9evVotW7bU8OHD1adPH7Vv3/6CjuntaJ1MtE4mWicTwencYmJilJOTo7i4OBmGoXnz5ikzM1OlpaWy2+1KTExUQkKCDMNQbGysgoKCKt1HkubMmaMnnnhCFotFzZo10+zZs+v13Fi3AAC17ZzhKTU1VY899pguv/xySdKCBQs0YcKEah/ofL+ULMn9peQ77rij2sdpKghOAGqDr6+vZs2aVWFbSEiI++fo6GhFR0efcx9J6tGjh1auXFk3E60G1i0AQF2pMjy99dZbWr16tfLz85WdnS3DMDR06FCVl5fXaBGqyZeSgfNB62SidTLROjU9rFsAgLpWZXj605/+pJtuuklLlizRI488Iunk3za2a9euRgeqyZeSUTlaJxPByURwQlPHugUAqGtVPufJarWqY8eOmj17ti699FJdeuml6tChg6xWa40OFBERoezsbEk665eSnU6ncnNzFR4eXqPjAACtU9PEugUAqGsee4JhTb6UjDPROplonUy0TiaCE2oL6xYA4HQeC081+VIyKiI4AYDnsG4BAE5X5WV7QENG62SidTLROgEAgLpEeGokaJ1MBCcTwQkAAMBzCE8AvAKtEwAA3s/lcmnGjBmy2+2Kj49XQUFBhfENGzYoNjZWdrtdq1atqjC2bds2xcfHX9DxPfadJ9QcrZOJ1slE62QiOAEA0DRkZWXJ6XQqPT1deXl5SklJ0eLFiyVJZWVlSk5O1urVq9WyZUsNHz5cffr0Ufv27bV06VK98847atmy5QUdn+ap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\n",
      "text/plain": [
       "<Figure size 864x360 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(ncols=2, figsize=(12,5))\n",
    "\n",
    "# Linear Regression\n",
    "ret1 = lin_reg.predict(X_data).reshape(t1.shape)\n",
    "surface1 = axes[0].contourf(t1, t2, ret1, cmap='Blues')\n",
    "plt.colorbar(mappable=surface1, ax=axes[0])\n",
    "\n",
    "# Regression Tree\n",
    "ret2 = reg_tree_t2.predict(X_data).reshape(t1.shape)\n",
    "surface2 = axes[1].contourf(t1, t2, ret2, cmap='Blues')\n",
    "plt.colorbar(mappable=surface2, ax=axes[1])\n",
    "\n",
    "# Format plots\n",
    "titles = ['Linear Regression', 'Regression Tree']\n",
    "for i, ax in enumerate(axes):\n",
    "    ax.set_xlabel('t-1')\n",
    "    ax.set_ylabel('t-2')\n",
    "    ax.set_title(titles[i])\n",
    "\n",
    "fig.suptitle('Decision Surfaces', fontsize=14)\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.subplots_adjust(top=.9);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simple Classification Tree with Time Series Data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A classification tree works just like the regression version, except that categorical nature of the outcome requires a different approach to making predictions and measuring the loss. While a regression tree predicts the response for an observation assigned to a leaf node using the mean outcome of the associated training samples, a classification tree instead uses the mode, that is, the most common class among the training samples in the relevant region. A classification tree can also generate probabilistic predictions based on relative class frequencies."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Loss Functions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When growing a classification tree, we also use recursive binary splitting but, instead of evaluating the quality of a decision rule using the reduction of the mean-squared error, we can use the classification error rate, which is simply the fraction of the training samples in a given (leave) node that do not belong to the most common class."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, the alternative measures, Gini Index or Cross-Entropy, are preferred because they are more sensitive to node purity than the classification error rate. Node purity refers to the extent of the preponderance of a single class in a node. A node that only contains samples with outcomes belonging to a single class is pure and imply successful classification for this particular region of the feature space. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.868701Z",
     "start_time": "2020-06-19T13:47:15.866677Z"
    }
   },
   "outputs": [],
   "source": [
    "def entropy(f):\n",
    "    return (-f*np.log2(f) - (1-f)*np.log2(1-f))/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.882913Z",
     "start_time": "2020-06-19T13:47:15.870160Z"
    }
   },
   "outputs": [],
   "source": [
    "def gini(f):\n",
    "    return 2*f*(1-f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:15.890923Z",
     "start_time": "2020-06-19T13:47:15.883817Z"
    }
   },
   "outputs": [],
   "source": [
    "def misclassification_rate(f):\n",
    "    return np.where(f<=.5, f, 1-f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Both the Gini Impurity and the Cross-Entropy measure take on smaller values when the class proportions approach zero or one, that is, when the child nodes become pure as a result of the split and are highest when the class proportions are even or 0.5 in the binary case. \n",
    "\n",
    "The chart below visualizes the values assumed by these two measures and the misclassification error rates across the [0, 1] interval of proportions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:16.142988Z",
     "start_time": "2020-06-19T13:47:15.891927Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, 1, 10000)\n",
    "(pd.DataFrame({'Gini': gini(x), \n",
    "              'Entropy': entropy(x),\n",
    "             'Misclassification Rate': misclassification_rate(x)}, index=x)\n",
    " .plot(title='Classification Loss Functions', lw=2, style=['-', '--', ':']))\n",
    "sns.despine()\n",
    "plt.tight_layout();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Compare computation time"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Gini is often preferred over entropy because it computes faster:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:30.855053Z",
     "start_time": "2020-06-19T13:47:16.144013Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "18.1 µs ± 212 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "misclassification_rate(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:40.020624Z",
     "start_time": "2020-06-19T13:47:30.856014Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11.3 µs ± 188 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "gini(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:41.621109Z",
     "start_time": "2020-06-19T13:47:40.021904Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "195 µs ± 939 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "entropy(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Configure Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:41.625353Z",
     "start_time": "2020-06-19T13:47:41.622443Z"
    }
   },
   "outputs": [],
   "source": [
    "clf_tree_t2 = DecisionTreeClassifier(criterion='gini',\n",
    "                                     splitter='best',\n",
    "                                     max_depth=5,\n",
    "                                     min_samples_split=1000,\n",
    "                                     min_samples_leaf=1,\n",
    "                                     min_weight_fraction_leaf=0.0,\n",
    "                                     max_features=None,\n",
    "                                     random_state=42,\n",
    "                                     max_leaf_nodes=None,\n",
    "                                     min_impurity_decrease=0.0,\n",
    "                                     min_impurity_split=None,\n",
    "                                     class_weight=None,\n",
    "                                     presort=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:41.644445Z",
     "start_time": "2020-06-19T13:47:41.626244Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    31568\n",
       "0    24618\n",
       "Name: y, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_binary = (y2>0).astype(int)\n",
    "y_binary.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:45.915689Z",
     "start_time": "2020-06-19T13:47:41.646664Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "51.9 ms ± 218 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "clf_tree_t2.fit(X=X2, y=y_binary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:45.988925Z",
     "start_time": "2020-06-19T13:47:45.916716Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(max_depth=5, min_samples_split=1000, presort=False,\n",
       "                       random_state=42)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf_tree_t2.fit(X=X2, y=y_binary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:46.020145Z",
     "start_time": "2020-06-19T13:47:45.990149Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.42.3 (20191010.1750)\n",
       " -->\n",
       "<!-- Title: Tree Pages: 1 -->\n",
       "<svg width=\"624pt\" height=\"401pt\"\n",
       " viewBox=\"0.00 0.00 623.50 401.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 397)\">\n",
       "<title>Tree</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-397 619.5,-397 619.5,4 -4,4\"/>\n",
       "<!-- 0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"#d3e9f9\" stroke=\"black\" d=\"M362,-393C362,-393 231,-393 231,-393 225,-393 219,-387 219,-381 219,-381 219,-322 219,-322 219,-316 225,-310 231,-310 231,-310 362,-310 362,-310 368,-310 374,-316 374,-322 374,-322 374,-381 374,-381 374,-387 368,-393 362,-393\"/>\n",
       "<text text-anchor=\"start\" x=\"261.5\" y=\"-377.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;1 ≤ &#45;0.074</text>\n",
       "<text text-anchor=\"start\" x=\"261\" y=\"-362.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.492</text>\n",
       "<text text-anchor=\"start\" x=\"244\" y=\"-347.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 56186</text>\n",
       "<text text-anchor=\"start\" x=\"227\" y=\"-332.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [24618, 31568]</text>\n",
       "<text text-anchor=\"start\" x=\"264.5\" y=\"-317.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"#f5fafe\" stroke=\"black\" d=\"M271.5,-274C271.5,-274 155.5,-274 155.5,-274 149.5,-274 143.5,-268 143.5,-262 143.5,-262 143.5,-203 143.5,-203 143.5,-197 149.5,-191 155.5,-191 155.5,-191 271.5,-191 271.5,-191 277.5,-191 283.5,-197 283.5,-203 283.5,-203 283.5,-262 283.5,-262 283.5,-268 277.5,-274 271.5,-274\"/>\n",
       "<text text-anchor=\"start\" x=\"178.5\" y=\"-258.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;1 ≤ &#45;0.257</text>\n",
       "<text text-anchor=\"start\" x=\"185.5\" y=\"-243.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.5</text>\n",
       "<text text-anchor=\"start\" x=\"165\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 7674</text>\n",
       "<text text-anchor=\"start\" x=\"151.5\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3733, 3941]</text>\n",
       "<text text-anchor=\"start\" x=\"181.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>0&#45;&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M267.7,-309.91C261.39,-301.01 254.65,-291.51 248.14,-282.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"250.89,-280.15 242.25,-274.02 245.18,-284.2 250.89,-280.15\"/>\n",
       "<text text-anchor=\"middle\" x=\"238.06\" y=\"-294.97\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n",
       "</g>\n",
       "<!-- 16 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>16</title>\n",
       "<path fill=\"#cfe7f9\" stroke=\"black\" d=\"M445,-274C445,-274 314,-274 314,-274 308,-274 302,-268 302,-262 302,-262 302,-203 302,-203 302,-197 308,-191 314,-191 314,-191 445,-191 445,-191 451,-191 457,-197 457,-203 457,-203 457,-262 457,-262 457,-268 451,-274 445,-274\"/>\n",
       "<text text-anchor=\"start\" x=\"346.5\" y=\"-258.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;1 ≤ 0.068</text>\n",
       "<text text-anchor=\"start\" x=\"347.5\" y=\"-243.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.49</text>\n",
       "<text text-anchor=\"start\" x=\"327\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 48512</text>\n",
       "<text text-anchor=\"start\" x=\"310\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [20885, 27627]</text>\n",
       "<text text-anchor=\"start\" x=\"347.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;16 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>0&#45;&gt;16</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M325.3,-309.91C331.61,-301.01 338.35,-291.51 344.86,-282.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"347.82,-284.2 350.75,-274.02 342.11,-280.15 347.82,-284.2\"/>\n",
       "<text text-anchor=\"middle\" x=\"354.94\" y=\"-294.97\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"#f7d8c2\" stroke=\"black\" d=\"M113,-147.5C113,-147.5 12,-147.5 12,-147.5 6,-147.5 0,-141.5 0,-135.5 0,-135.5 0,-91.5 0,-91.5 0,-85.5 6,-79.5 12,-79.5 12,-79.5 113,-79.5 113,-79.5 119,-79.5 125,-85.5 125,-91.5 125,-91.5 125,-135.5 125,-135.5 125,-141.5 119,-147.5 113,-147.5\"/>\n",
       "<text text-anchor=\"start\" x=\"27\" y=\"-132.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.484</text>\n",
       "<text text-anchor=\"start\" x=\"17.5\" y=\"-117.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 596</text>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-102.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [352, 244]</text>\n",
       "<text text-anchor=\"start\" x=\"21.5\" y=\"-87.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Down</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M161.11,-190.91C145.73,-178.99 128.93,-165.98 113.63,-154.12\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"115.35,-151.03 105.31,-147.67 111.07,-156.56 115.35,-151.03\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"#eef7fd\" stroke=\"black\" d=\"M271.5,-155C271.5,-155 155.5,-155 155.5,-155 149.5,-155 143.5,-149 143.5,-143 143.5,-143 143.5,-84 143.5,-84 143.5,-78 149.5,-72 155.5,-72 155.5,-72 271.5,-72 271.5,-72 277.5,-72 283.5,-78 283.5,-84 283.5,-84 283.5,-143 283.5,-143 283.5,-149 277.5,-155 271.5,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"178.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ &#45;0.067</text>\n",
       "<text text-anchor=\"start\" x=\"178\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.499</text>\n",
       "<text text-anchor=\"start\" x=\"165\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 7078</text>\n",
       "<text text-anchor=\"start\" x=\"151.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3381, 3697]</text>\n",
       "<text text-anchor=\"start\" x=\"181.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>1&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M213.5,-190.91C213.5,-182.65 213.5,-173.86 213.5,-165.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"217,-165.02 213.5,-155.02 210,-165.02 217,-165.02\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M197.5,-36C197.5,-36 167.5,-36 167.5,-36 161.5,-36 155.5,-30 155.5,-24 155.5,-24 155.5,-12 155.5,-12 155.5,-6 161.5,0 167.5,0 167.5,0 197.5,0 197.5,0 203.5,0 209.5,-6 209.5,-12 209.5,-12 209.5,-24 209.5,-24 209.5,-30 203.5,-36 197.5,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"182.5\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M199.99,-71.76C197.1,-63.04 194.12,-54.04 191.45,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.74,-44.8 188.27,-36.41 188.1,-47 194.74,-44.8\"/>\n",
       "</g>\n",
       "<!-- 9 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>9</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M269.5,-36C269.5,-36 239.5,-36 239.5,-36 233.5,-36 227.5,-30 227.5,-24 227.5,-24 227.5,-12 227.5,-12 227.5,-6 233.5,0 239.5,0 239.5,0 269.5,0 269.5,0 275.5,0 281.5,-6 281.5,-12 281.5,-12 281.5,-24 281.5,-24 281.5,-30 275.5,-36 269.5,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"254.5\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;9 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3&#45;&gt;9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M231.36,-71.76C235.23,-62.94 239.22,-53.84 242.78,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"246.06,-46.97 246.87,-36.41 239.65,-44.16 246.06,-46.97\"/>\n",
       "</g>\n",
       "<!-- 17 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>17</title>\n",
       "<path fill=\"#cbe5f8\" stroke=\"black\" d=\"M445,-155C445,-155 314,-155 314,-155 308,-155 302,-149 302,-143 302,-143 302,-84 302,-84 302,-78 308,-72 314,-72 314,-72 445,-72 445,-72 451,-72 457,-78 457,-84 457,-84 457,-143 457,-143 457,-149 451,-155 445,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"344.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ &#45;0.067</text>\n",
       "<text text-anchor=\"start\" x=\"344\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.489</text>\n",
       "<text text-anchor=\"start\" x=\"327\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 37179</text>\n",
       "<text text-anchor=\"start\" x=\"310\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [15791, 21388]</text>\n",
       "<text text-anchor=\"start\" x=\"347.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;17 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>16&#45;&gt;17</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M379.5,-190.91C379.5,-182.65 379.5,-173.86 379.5,-165.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"383,-165.02 379.5,-155.02 376,-165.02 383,-165.02\"/>\n",
       "</g>\n",
       "<!-- 28 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>28</title>\n",
       "<path fill=\"#dbedfa\" stroke=\"black\" d=\"M603.5,-155C603.5,-155 487.5,-155 487.5,-155 481.5,-155 475.5,-149 475.5,-143 475.5,-143 475.5,-84 475.5,-84 475.5,-78 481.5,-72 487.5,-72 487.5,-72 603.5,-72 603.5,-72 609.5,-72 615.5,-78 615.5,-84 615.5,-84 615.5,-143 615.5,-143 615.5,-149 609.5,-155 603.5,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"512.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">t&#45;2 ≤ 0.107</text>\n",
       "<text text-anchor=\"start\" x=\"510\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.495</text>\n",
       "<text text-anchor=\"start\" x=\"493\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 11333</text>\n",
       "<text text-anchor=\"start\" x=\"483.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [5094, 6239]</text>\n",
       "<text text-anchor=\"start\" x=\"513.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;28 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>16&#45;&gt;28</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M437.09,-190.91C450.87,-181.2 465.68,-170.76 479.79,-160.81\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.85,-163.64 488.01,-155.02 477.82,-157.92 481.85,-163.64\"/>\n",
       "</g>\n",
       "<!-- 18 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>18</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M363.5,-36C363.5,-36 333.5,-36 333.5,-36 327.5,-36 321.5,-30 321.5,-24 321.5,-24 321.5,-12 321.5,-12 321.5,-6 327.5,0 333.5,0 333.5,0 363.5,0 363.5,0 369.5,0 375.5,-6 375.5,-12 375.5,-12 375.5,-24 375.5,-24 375.5,-30 369.5,-36 363.5,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"348.5\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;18 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>17&#45;&gt;18</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M365.99,-71.76C363.1,-63.04 360.12,-54.04 357.45,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"360.74,-44.8 354.27,-36.41 354.1,-47 360.74,-44.8\"/>\n",
       "</g>\n",
       "<!-- 23 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>23</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M435.5,-36C435.5,-36 405.5,-36 405.5,-36 399.5,-36 393.5,-30 393.5,-24 393.5,-24 393.5,-12 393.5,-12 393.5,-6 399.5,0 405.5,0 405.5,0 435.5,0 435.5,0 441.5,0 447.5,-6 447.5,-12 447.5,-12 447.5,-24 447.5,-24 447.5,-30 441.5,-36 435.5,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"420.5\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;23 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>17&#45;&gt;23</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M397.36,-71.76C401.23,-62.94 405.22,-53.84 408.78,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"412.06,-46.97 412.87,-36.41 405.65,-44.16 412.06,-46.97\"/>\n",
       "</g>\n",
       "<!-- 29 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>29</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M518.5,-36C518.5,-36 488.5,-36 488.5,-36 482.5,-36 476.5,-30 476.5,-24 476.5,-24 476.5,-12 476.5,-12 476.5,-6 482.5,0 488.5,0 488.5,0 518.5,0 518.5,0 524.5,0 530.5,-6 530.5,-12 530.5,-12 530.5,-24 530.5,-24 530.5,-30 524.5,-36 518.5,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"503.5\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 28&#45;&gt;29 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>28&#45;&gt;29</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M527.2,-71.76C523.24,-62.94 519.15,-53.84 515.5,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"518.61,-44.09 511.32,-36.41 512.22,-46.96 518.61,-44.09\"/>\n",
       "</g>\n",
       "<!-- 36 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>36</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M590.5,-36C590.5,-36 560.5,-36 560.5,-36 554.5,-36 548.5,-30 548.5,-24 548.5,-24 548.5,-12 548.5,-12 548.5,-6 554.5,0 560.5,0 560.5,0 590.5,0 590.5,0 596.5,0 602.5,-6 602.5,-12 602.5,-12 602.5,-24 602.5,-24 602.5,-30 596.5,-36 590.5,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"575.5\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 28&#45;&gt;36 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>28&#45;&gt;36</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M558.57,-71.76C561.37,-63.04 564.26,-54.04 566.84,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"570.19,-47 569.92,-36.41 563.53,-44.86 570.19,-47\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7f29a833bfd0>"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out_file = results_path / 'clf_tree_t2.dot'\n",
    "dot_data = export_graphviz(clf_tree_t2,\n",
    "                           out_file=out_file.as_posix(),\n",
    "                           feature_names=X2.columns,\n",
    "                           class_names=['Down', 'Up'],\n",
    "                           max_depth=2,\n",
    "                           filled=True,\n",
    "                           rounded=True,\n",
    "                           special_characters=True)\n",
    "if out_file is not None:\n",
    "    dot_data = Path(out_file).read_text()\n",
    "\n",
    "graphviz.Source(dot_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compare with Logistic Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Statsmodels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:46.030455Z",
     "start_time": "2020-06-19T13:47:46.021321Z"
    }
   },
   "outputs": [],
   "source": [
    "log_reg_sm = sm.Logit(endog=y_binary, exog=sm.add_constant(X2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:47.619147Z",
     "start_time": "2020-06-19T13:47:46.031533Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "19.2 ms ± 82.5 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "log_reg_sm.fit(disp=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:47.649511Z",
     "start_time": "2020-06-19T13:47:47.620117Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.685280\n",
      "         Iterations 4\n"
     ]
    }
   ],
   "source": [
    "log_result = log_reg_sm.fit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:47.799269Z",
     "start_time": "2020-06-19T13:47:47.651703Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:                      y   No. Observations:                56186\n",
      "Model:                          Logit   Df Residuals:                    56183\n",
      "Method:                           MLE   Df Model:                            2\n",
      "Date:                Fri, 19 Jun 2020   Pseudo R-squ.:               0.0002871\n",
      "Time:                        09:47:47   Log-Likelihood:                -38503.\n",
      "converged:                       True   LL-Null:                       -38514.\n",
      "Covariance Type:            nonrobust   LLR p-value:                 1.578e-05\n",
      "==============================================================================\n",
      "                 coef    std err          z      P>|z|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const          0.2447      0.009     28.513      0.000       0.228       0.262\n",
      "t-1            0.4548      0.097      4.698      0.000       0.265       0.644\n",
      "t-2            0.0018      0.097      0.019      0.985      -0.188       0.191\n",
      "==============================================================================\n"
     ]
    }
   ],
   "source": [
    "print(log_result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### sklearn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:47.803822Z",
     "start_time": "2020-06-19T13:47:47.800308Z"
    }
   },
   "outputs": [],
   "source": [
    "log_reg_sk = LogisticRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:52.715113Z",
     "start_time": "2020-06-19T13:47:47.804813Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "60.8 ms ± 6.15 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "log_reg_sk.fit(X=X2, y=y_binary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:52.777647Z",
     "start_time": "2020-06-19T13:47:52.716211Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_reg_sk.fit(X=X2, y=y_binary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:52.781439Z",
     "start_time": "2020-06-19T13:47:52.778708Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.45052983, 0.0019411 ]])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_reg_sk.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Decision Surfaces: Classifier Tree vs. Logistic Regression "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.275667Z",
     "start_time": "2020-06-19T13:47:52.782472Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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UYKjR4+ybt060tLSePfddylTpgwATk5OtG/fnnnz5tGxY0eefvppzpw5w6pVq6hTp06OV8GuVKVKlWz76Ny5M76+viQkJBAdHU1qairFixcnISHBtn7v3r1Zu3Yts2bNYuvWrTz88MMcOnSItWvXUrt2bXr06AHAK6+8wk8//URkZCTbt2+nYcOGnD9/nlWrVnHhwgUmTZpke7Zp8ODB9OvXj7Zt29KiRQvuvvtudu3axebNm2nYsCGNGjW6jk9cROTOopAkIlIIfvzxR3788Ufb18WLF+eBBx6ga9eu9OjRgwcffDDbNi+++CJeXl7MmzePH374AavVSsWKFRk6dChdunTJ8pxR27ZtKV++PLNnz+b7778nPT2dWrVqER4enueU1t26dbM9/L9y5UouXLhApUqVGDZsGF27ds3znLp3706lSpX4+OOP+eGHHzDGUKVKFXr37k2HDh2u4VPKW8uWLfHx8WHBggVs3ryZL7/8kosXL1KuXDlatmxJz549s03HPXjwYIoXL86XX35JZGQklSpVIiwsDA8Pj+sKSY6OjsyYMYMpU6awceNG4uLiuPfee3nyySfp27cv7777LtHR0Rw9epQHH3wQV1dXFi9ezIwZM1i1ahW//fYbpUqVomvXrgwcONAWYl1cXFiwYAEfffQRK1euZPHixbi7u+Pr60vv3r1p2LChrYZmzZrx8ccfM3fuXNasWcP58+e5//776devH7169dIMdyIiV8HBXO0UQiL/cvz4cdq0aXPD7nf/8ccf+fnnn23vVsnJ2rVr+e2333j99devaP1/1xsYGJjlAeaUlBTuvfdeJkyYkO9D8YXh008/JTExkVdeeaWwSxERuS1kZGSwYMECVqxYQUZGBmlpaTRp0oTXX38di8XC0KFDqVatGi+99NINO6Z9v9qzZw+vvfYaJUuWJCgoiKNHj15xH/u3ESNGEBISgo+PD2+99RatWrXi8ccfv65aDxw4QGhoKHB54pXExEQqVKgAXP4jzAsvvHBd+xcp6hSS5Lrd6JB0JaZPn05CQgIjR4686m1zqtcYw/jx40lISGDKlCk3slQRESmCwsLCOHfuHOHh4bi7u5OSksIbb7yBq6srkyZNuikhyd4HH3zAyZMnCQ8Pv+59NW3alPfffz/f95ldq+XLl/P9998ze/bsm7J/kaJIt9vJTZWYmMiYMWPY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ltfKzJo1i/PnzzNjxgy6detGt27duHgx7zvIbukrSSIicuMEBgayceNGQkJCMMYwYcIEVqxYQUpKCsHBwQwaNIju3btjsVjw8/MjICCAM2fO8P777zNv3jzc3d0JDw8nIyOD8PBw7rvvPl577TUAHnnkEQYMGFDIZygiIrc6R0dHxo4dm2VZlSpVbP8uXbo0X331VZbxESNGMGLEiKs6jkKSiIgA+TeeoKAggoKCsoyXLl2a//73v9n29csvv9yUGkVERAqCbrcTERERERGxo5AkIiIiIiJiRyFJRERERETEjkKS3BB6Z4KIiIiI3J4bfo8AACAASURBVC4UkkREREREROwoJImIiIiIiNhRSBIREREREbGjkCQiIiIiImJHIUlERERERMSOQpKIiIiIiIgdhSQRERERERE7CkkiIiIiIiJ2FJJERERERETsKCSJiIiIiIjYUUgSERERERGxo5AkIiIiIiJiRyFJRERERETEjkKSiOSrYuWyhV2CiIiISIFRSBIREREREbGjkCQiIiIiImJHIUlERERERMSOQpKIiIiIiIgdhSQRERERERE7CkkiIiIiIiJ2FJJERERERETsKCSJiIiIiIjYUUgSERERERGx41zYBYiISNFgtVoZPXo0+/btw2KxMH78eDw9PW3j8+fPJyoqitKlSwMwZswYKlasyNChQzlx4gSOjo6MGzeOKlWq2LZZsWIFCxcuZOnSpQV+PiIicvvJr1fFxsYSERGBMYayZcsyadIkHB0d8+xVOVFIEhERAKKjo0lNTWXp0qXExMQQERHBzJkzbeNxcXFMnDgRHx+fLNukp6ezZMkSNm7cyNSpU5k+fToAe/bsISoqCmNMgZ+LiIjcnvLqVcYYwsLCmDZtGp6enixbtowTJ05w6NChXHtVbnS7nYiIALB9+3b8/f0BqFu3Lrt27coyHhcXx5w5c+jUqROzZ88GoHLlymRkZGC1WklKSsLZ+fLf3hISEpg8eTLDhw8v2JMQEZHbWl696vDhw3h4ePDJJ5/QtWtXzp49i5eXV669Ki+6kiQicgdJSEigXbt2tq+Dg4MJDg4GICkpCTc3N9uYk5MT6enptmbSqlUrOnfujJubG/3792fNmjXUqFGDEydO8Mwzz5CQkMCsWbPIyMjgrbfeYvjw4RQrVqxgT1BERG5pefUpyLtXJSQksGPHDsLC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\n",
      "text/plain": [
       "<Figure size 864x360 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(ncols=2, figsize=(12,5))\n",
    "\n",
    "# Linear Regression\n",
    "ret1 = log_reg_sk.predict_proba(X_data)[:, 1].reshape(t1.shape)\n",
    "surface1 = axes[0].contourf(t1, t2, ret1, cmap='Blues')\n",
    "plt.colorbar(mappable=surface1, ax=axes[0])\n",
    "\n",
    "# Regression Tree\n",
    "ret2 = clf_tree_t2.predict_proba(X_data)[:, 1].reshape(t1.shape)\n",
    "surface2 = axes[1].contourf(t1, t2, ret2, cmap='Blues')\n",
    "plt.colorbar(mappable=surface2, ax=axes[1])\n",
    "\n",
    "# Format plots\n",
    "titles = ['Logistic Regression', 'Classification Tree']\n",
    "for i, ax in enumerate(axes):\n",
    "    ax.set_xlabel('t-1')\n",
    "    ax.set_ylabel('t-2')\n",
    "    ax.set_title(titles[i])\n",
    "\n",
    "fig.suptitle('Decision Surfaces', fontsize=20)\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.subplots_adjust(top=.9);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Regression Tree with all Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now train, visualize, and evaluate a regression tree with up to 5 consecutive splits using 80% of the samples for training to predict the remaining 20%.\n",
    "\n",
    "We are taking a shortcut here to simplify the illustration and use the built-in train_test_split, which does not protect against lookahead bias, as our custom iterator. The tree configuration implies up to $2^5=32$ leaf nodes that, on average in the balanced case, would contain over 4,300 of the training samples."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train-Test Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.293648Z",
     "start_time": "2020-06-19T13:47:53.276718Z"
    }
   },
   "outputs": [],
   "source": [
    "X = pd.get_dummies(data.drop('target', axis=1))\n",
    "y = data.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.318451Z",
     "start_time": "2020-06-19T13:47:53.295601Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Configure Tree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The output after training the model displays all the DecisionTreeClassifier parameters that we will address in more detail in the next section when we discuss parameter-tuning. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.324117Z",
     "start_time": "2020-06-19T13:47:53.319752Z"
    }
   },
   "outputs": [],
   "source": [
    "regression_tree = DecisionTreeRegressor(criterion='mse',\n",
    "                                        splitter='best',\n",
    "                                        max_depth=5,\n",
    "                                        min_samples_split=2,\n",
    "                                        min_samples_leaf=1,\n",
    "                                        min_weight_fraction_leaf=0.0,\n",
    "                                        max_features=None,\n",
    "                                        random_state=42,\n",
    "                                        max_leaf_nodes=None,\n",
    "                                        min_impurity_decrease=0.0,\n",
    "                                        min_impurity_split=None,\n",
    "                                        presort=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.774832Z",
     "start_time": "2020-06-19T13:47:53.325278Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeRegressor(max_depth=5, presort=False, random_state=42)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regression_tree.fit(X=X_train, y=y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize Tree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result shows that the model uses a variety of different features and indicates the split rules for both continuous and categorical (dummy) variables. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.815207Z",
     "start_time": "2020-06-19T13:47:53.775753Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.42.3 (20191010.1750)\n",
       " -->\n",
       "<!-- Title: Tree Pages: 1 -->\n",
       "<svg width=\"1147pt\" height=\"460pt\"\n",
       " viewBox=\"0.00 0.00 1147.00 460.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 456)\">\n",
       "<title>Tree</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-456 1143,-456 1143,4 -4,4\"/>\n",
       "<!-- 0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"#f1bb94\" stroke=\"black\" d=\"M575.5,-452C575.5,-452 478.5,-452 478.5,-452 472.5,-452 466.5,-446 466.5,-440 466.5,-440 466.5,-396 466.5,-396 466.5,-390 472.5,-384 478.5,-384 478.5,-384 575.5,-384 575.5,-384 581.5,-384 587.5,-390 587.5,-396 587.5,-396 587.5,-440 587.5,-440 587.5,-446 581.5,-452 575.5,-452\"/>\n",
       "<text text-anchor=\"start\" x=\"485\" y=\"-436.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2008.5</text>\n",
       "<text text-anchor=\"start\" x=\"489\" y=\"-421.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.008</text>\n",
       "<text text-anchor=\"start\" x=\"474.5\" y=\"-406.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 45404</text>\n",
       "<text text-anchor=\"start\" x=\"486\" y=\"-391.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.009</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"#f2bf9b\" stroke=\"black\" d=\"M501.5,-348C501.5,-348 404.5,-348 404.5,-348 398.5,-348 392.5,-342 392.5,-336 392.5,-336 392.5,-292 392.5,-292 392.5,-286 398.5,-280 404.5,-280 404.5,-280 501.5,-280 501.5,-280 507.5,-280 513.5,-286 513.5,-292 513.5,-292 513.5,-336 513.5,-336 513.5,-342 507.5,-348 501.5,-348\"/>\n",
       "<text text-anchor=\"start\" x=\"411\" y=\"-332.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2007.5</text>\n",
       "<text text-anchor=\"start\" x=\"415\" y=\"-317.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.009</text>\n",
       "<text text-anchor=\"start\" x=\"400.5\" y=\"-302.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 10400</text>\n",
       "<text text-anchor=\"start\" x=\"409.5\" y=\"-287.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.009</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>0&#45;&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M502.97,-383.88C496.64,-375.15 489.73,-365.62 483.12,-356.51\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"485.86,-354.34 477.16,-348.3 480.2,-358.45 485.86,-354.34\"/>\n",
       "<text text-anchor=\"middle\" x=\"473.23\" y=\"-369.29\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n",
       "</g>\n",
       "<!-- 32 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>32</title>\n",
       "<path fill=\"#f1ba92\" stroke=\"black\" d=\"M705.5,-348C705.5,-348 608.5,-348 608.5,-348 602.5,-348 596.5,-342 596.5,-336 596.5,-336 596.5,-292 596.5,-292 596.5,-286 602.5,-280 608.5,-280 608.5,-280 705.5,-280 705.5,-280 711.5,-280 717.5,-286 717.5,-292 717.5,-292 717.5,-336 717.5,-336 717.5,-342 711.5,-348 705.5,-348\"/>\n",
       "<text text-anchor=\"start\" x=\"620.5\" y=\"-332.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 3.5</text>\n",
       "<text text-anchor=\"start\" x=\"619\" y=\"-317.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"604.5\" y=\"-302.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 35004</text>\n",
       "<text text-anchor=\"start\" x=\"616\" y=\"-287.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.014</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;32 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>0&#45;&gt;32</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M569.21,-383.88C581.13,-374.53 594.22,-364.26 606.57,-354.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"608.85,-357.23 614.56,-348.3 604.53,-351.72 608.85,-357.23\"/>\n",
       "<text text-anchor=\"middle\" x=\"611.56\" y=\"-369.42\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"#f1bc96\" stroke=\"black\" d=\"M273.5,-244C273.5,-244 184.5,-244 184.5,-244 178.5,-244 172.5,-238 172.5,-232 172.5,-232 172.5,-188 172.5,-188 172.5,-182 178.5,-176 184.5,-176 184.5,-176 273.5,-176 273.5,-176 279.5,-176 285.5,-182 285.5,-188 285.5,-188 285.5,-232 285.5,-232 285.5,-238 279.5,-244 273.5,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"194\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">atr ≤ &#45;0.477</text>\n",
       "<text text-anchor=\"start\" x=\"191\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.005</text>\n",
       "<text text-anchor=\"start\" x=\"180.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 6917</text>\n",
       "<text text-anchor=\"start\" x=\"188\" y=\"-183.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.003</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M392.38,-285.4C362.32,-271.71 325.96,-255.15 295.18,-241.13\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"296.37,-237.83 285.81,-236.87 293.46,-244.2 296.37,-237.83\"/>\n",
       "</g>\n",
       "<!-- 17 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>17</title>\n",
       "<path fill=\"#f3c6a5\" stroke=\"black\" d=\"M497.5,-244C497.5,-244 408.5,-244 408.5,-244 402.5,-244 396.5,-238 396.5,-232 396.5,-232 396.5,-188 396.5,-188 396.5,-182 402.5,-176 408.5,-176 408.5,-176 497.5,-176 497.5,-176 503.5,-176 509.5,-182 509.5,-188 509.5,-188 509.5,-232 509.5,-232 509.5,-238 503.5,-244 497.5,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"416.5\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 7.5</text>\n",
       "<text text-anchor=\"start\" x=\"415\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.015</text>\n",
       "<text text-anchor=\"start\" x=\"404.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 3483</text>\n",
       "<text text-anchor=\"start\" x=\"409.5\" y=\"-183.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.035</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;17 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>1&#45;&gt;17</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M453,-279.88C453,-271.78 453,-262.98 453,-254.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"456.5,-254.3 453,-244.3 449.5,-254.3 456.5,-254.3\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"#f1b991\" stroke=\"black\" d=\"M142.5,-140C142.5,-140 53.5,-140 53.5,-140 47.5,-140 41.5,-134 41.5,-128 41.5,-128 41.5,-84 41.5,-84 41.5,-78 47.5,-72 53.5,-72 53.5,-72 142.5,-72 142.5,-72 148.5,-72 154.5,-78 154.5,-84 154.5,-84 154.5,-128 154.5,-128 154.5,-134 148.5,-140 142.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"61.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 6.5</text>\n",
       "<text text-anchor=\"start\" x=\"60\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.004</text>\n",
       "<text text-anchor=\"start\" x=\"49.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2036</text>\n",
       "<text text-anchor=\"start\" x=\"57\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.016</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M186.47,-175.88C174.46,-166.53 161.26,-156.26 148.82,-146.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"150.81,-143.68 140.77,-140.3 146.51,-149.2 150.81,-143.68\"/>\n",
       "</g>\n",
       "<!-- 10 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>10</title>\n",
       "<path fill=\"#f1be98\" stroke=\"black\" d=\"M273.5,-140C273.5,-140 184.5,-140 184.5,-140 178.5,-140 172.5,-134 172.5,-128 172.5,-128 172.5,-84 172.5,-84 172.5,-78 178.5,-72 184.5,-72 184.5,-72 273.5,-72 273.5,-72 279.5,-72 285.5,-78 285.5,-84 285.5,-84 285.5,-128 285.5,-128 285.5,-134 279.5,-140 273.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"192.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 9.5</text>\n",
       "<text text-anchor=\"start\" x=\"191\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.005</text>\n",
       "<text text-anchor=\"start\" x=\"180.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 4881</text>\n",
       "<text text-anchor=\"start\" x=\"185.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.002</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;10 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2&#45;&gt;10</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M229,-175.88C229,-167.78 229,-158.98 229,-150.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"232.5,-150.3 229,-140.3 225.5,-150.3 232.5,-150.3\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M42,-36C42,-36 12,-36 12,-36 6,-36 0,-30 0,-24 0,-24 0,-12 0,-12 0,-6 6,0 12,0 12,0 42,0 42,0 48,0 54,-6 54,-12 54,-12 54,-24 54,-24 54,-30 48,-36 42,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M70.75,-72C63.17,-62.81 55.05,-52.97 47.89,-44.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"50.43,-41.89 41.37,-36.4 45.04,-46.34 50.43,-41.89\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M114,-36C114,-36 84,-36 84,-36 78,-36 72,-30 72,-24 72,-24 72,-12 72,-12 72,-6 78,0 84,0 84,0 114,0 114,0 120,0 126,-6 126,-12 126,-12 126,-24 126,-24 126,-30 120,-36 114,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M98.38,-72C98.48,-63.56 98.59,-54.59 98.68,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"102.18,-46.44 98.8,-36.4 95.18,-46.36 102.18,-46.44\"/>\n",
       "</g>\n",
       "<!-- 11 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>11</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M189,-36C189,-36 159,-36 159,-36 153,-36 147,-30 147,-24 147,-24 147,-12 147,-12 147,-6 153,0 159,0 159,0 189,0 189,0 195,0 201,-6 201,-12 201,-12 201,-24 201,-24 201,-30 195,-36 189,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"174\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;11 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>10&#45;&gt;11</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M207.89,-72C202.14,-63 195.99,-53.38 190.53,-44.84\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.47,-42.94 185.13,-36.4 187.57,-46.71 193.47,-42.94\"/>\n",
       "</g>\n",
       "<!-- 14 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>14</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M261,-36C261,-36 231,-36 231,-36 225,-36 219,-30 219,-24 219,-24 219,-12 219,-12 219,-6 225,0 231,0 231,0 261,0 261,0 267,0 273,-6 273,-12 273,-12 273,-24 273,-24 273,-30 267,-36 261,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"246\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;14 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>10&#45;&gt;14</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M235.52,-72C237.19,-63.56 238.96,-54.59 240.57,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"244.05,-46.89 242.56,-36.4 237.19,-45.53 244.05,-46.89\"/>\n",
       "</g>\n",
       "<!-- 18 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>18</title>\n",
       "<path fill=\"#f2be98\" stroke=\"black\" d=\"M404.5,-140C404.5,-140 315.5,-140 315.5,-140 309.5,-140 303.5,-134 303.5,-128 303.5,-128 303.5,-84 303.5,-84 303.5,-78 309.5,-72 315.5,-72 315.5,-72 404.5,-72 404.5,-72 410.5,-72 416.5,-78 416.5,-84 416.5,-84 416.5,-128 416.5,-128 416.5,-134 410.5,-140 404.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"323.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 4.5</text>\n",
       "<text text-anchor=\"start\" x=\"325.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.01</text>\n",
       "<text text-anchor=\"start\" x=\"311.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2031</text>\n",
       "<text text-anchor=\"start\" x=\"316.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.002</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;18 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>17&#45;&gt;18</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M422.81,-175.88C414.68,-166.98 405.8,-157.24 397.34,-147.96\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"399.69,-145.33 390.36,-140.3 394.51,-150.05 399.69,-145.33\"/>\n",
       "</g>\n",
       "<!-- 25 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>25</title>\n",
       "<path fill=\"#f6d1b7\" stroke=\"black\" d=\"M535.5,-140C535.5,-140 446.5,-140 446.5,-140 440.5,-140 434.5,-134 434.5,-128 434.5,-128 434.5,-84 434.5,-84 434.5,-78 440.5,-72 446.5,-72 446.5,-72 535.5,-72 535.5,-72 541.5,-72 547.5,-78 547.5,-84 547.5,-84 547.5,-128 547.5,-128 547.5,-134 541.5,-140 535.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"450.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 10.5</text>\n",
       "<text text-anchor=\"start\" x=\"453\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.018</text>\n",
       "<text text-anchor=\"start\" x=\"442.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1452</text>\n",
       "<text text-anchor=\"start\" x=\"451.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.08</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;25 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>17&#45;&gt;25</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M465.34,-175.88C468.42,-167.6 471.78,-158.6 475.01,-149.91\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"478.38,-150.89 478.59,-140.3 471.82,-148.45 478.38,-150.89\"/>\n",
       "</g>\n",
       "<!-- 19 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>19</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M334,-36C334,-36 304,-36 304,-36 298,-36 292,-30 292,-24 292,-24 292,-12 292,-12 292,-6 298,0 304,0 304,0 334,0 334,0 340,0 346,-6 346,-12 346,-12 346,-24 346,-24 346,-30 340,-36 334,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"319\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;19 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>18&#45;&gt;19</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M344.27,-72C340.11,-63.28 335.68,-53.98 331.71,-45.65\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"334.76,-43.92 327.3,-36.4 328.44,-46.94 334.76,-43.92\"/>\n",
       "</g>\n",
       "<!-- 22 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>22</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M406,-36C406,-36 376,-36 376,-36 370,-36 364,-30 364,-24 364,-24 364,-12 364,-12 364,-6 370,0 376,0 376,0 406,0 406,0 412,0 418,-6 418,-12 418,-12 418,-24 418,-24 418,-30 412,-36 406,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;22 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>18&#45;&gt;22</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M371.9,-72C375,-63.38 378.32,-54.19 381.3,-45.92\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"384.63,-47 384.73,-36.4 378.04,-44.62 384.63,-47\"/>\n",
       "</g>\n",
       "<!-- 26 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>26</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M479,-36C479,-36 449,-36 449,-36 443,-36 437,-30 437,-24 437,-24 437,-12 437,-12 437,-6 443,0 449,0 449,0 479,0 479,0 485,0 491,-6 491,-12 491,-12 491,-24 491,-24 491,-30 485,-36 479,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"464\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;26 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>25&#45;&gt;26</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M480.64,-72C477.96,-63.47 475.11,-54.39 472.54,-46.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"475.8,-44.9 469.46,-36.4 469.12,-46.99 475.8,-44.9\"/>\n",
       "</g>\n",
       "<!-- 29 -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>29</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M551,-36C551,-36 521,-36 521,-36 515,-36 509,-30 509,-24 509,-24 509,-12 509,-12 509,-6 515,0 521,0 521,0 551,0 551,0 557,0 563,-6 563,-12 563,-12 563,-24 563,-24 563,-30 557,-36 551,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"536\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;29 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>25&#45;&gt;29</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M508.27,-72C512.88,-63.19 517.8,-53.78 522.2,-45.38\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"525.36,-46.89 526.89,-36.4 519.16,-43.64 525.36,-46.89\"/>\n",
       "</g>\n",
       "<!-- 33 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>33</title>\n",
       "<path fill=\"#f0b68c\" stroke=\"black\" d=\"M719,-244C719,-244 595,-244 595,-244 589,-244 583,-238 583,-232 583,-232 583,-188 583,-188 583,-182 589,-176 595,-176 595,-176 719,-176 719,-176 725,-176 731,-182 731,-188 731,-188 731,-232 731,-232 731,-238 725,-244 719,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"591\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">momentum_6 ≤ &#45;0.26</text>\n",
       "<text text-anchor=\"start\" x=\"619\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"608.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 8833</text>\n",
       "<text text-anchor=\"start\" x=\"616\" y=\"-183.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.029</text>\n",
       "</g>\n",
       "<!-- 32&#45;&gt;33 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>32&#45;&gt;33</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M657,-279.88C657,-271.78 657,-262.98 657,-254.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"660.5,-254.3 657,-244.3 653.5,-254.3 660.5,-254.3\"/>\n",
       "</g>\n",
       "<!-- 48 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>48</title>\n",
       "<path fill=\"#f1bb94\" stroke=\"black\" d=\"M953.5,-244C953.5,-244 856.5,-244 856.5,-244 850.5,-244 844.5,-238 844.5,-232 844.5,-232 844.5,-188 844.5,-188 844.5,-182 850.5,-176 856.5,-176 856.5,-176 953.5,-176 953.5,-176 959.5,-176 965.5,-182 965.5,-188 965.5,-188 965.5,-232 965.5,-232 965.5,-238 959.5,-244 953.5,-244\"/>\n",
       "<text text-anchor=\"start\" x=\"868.5\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 5.5</text>\n",
       "<text text-anchor=\"start\" x=\"867\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"852.5\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 26171</text>\n",
       "<text text-anchor=\"start\" x=\"867.5\" y=\"-183.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.01</text>\n",
       "</g>\n",
       "<!-- 32&#45;&gt;48 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>32&#45;&gt;48</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M717.67,-288.05C752.95,-273.54 797.57,-255.18 834.42,-240.03\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"836.18,-243.09 844.1,-236.05 833.52,-236.61 836.18,-243.09\"/>\n",
       "</g>\n",
       "<!-- 34 -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>34</title>\n",
       "<path fill=\"#e99356\" stroke=\"black\" d=\"M660,-140C660,-140 578,-140 578,-140 572,-140 566,-134 566,-128 566,-128 566,-84 566,-84 566,-78 572,-72 578,-72 578,-72 660,-72 660,-72 666,-72 672,-78 672,-84 672,-84 672,-128 672,-128 672,-134 666,-140 660,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"582.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 2.5</text>\n",
       "<text text-anchor=\"start\" x=\"581\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.026</text>\n",
       "<text text-anchor=\"start\" x=\"574\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 138</text>\n",
       "<text text-anchor=\"start\" x=\"578\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.168</text>\n",
       "</g>\n",
       "<!-- 33&#45;&gt;34 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>33&#45;&gt;34</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M644.66,-175.88C641.58,-167.6 638.22,-158.6 634.99,-149.91\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"638.18,-148.45 631.41,-140.3 631.62,-150.89 638.18,-148.45\"/>\n",
       "</g>\n",
       "<!-- 41 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>41</title>\n",
       "<path fill=\"#f0b68d\" stroke=\"black\" d=\"M818,-140C818,-140 702,-140 702,-140 696,-140 690,-134 690,-128 690,-128 690,-84 690,-84 690,-78 696,-72 702,-72 702,-72 818,-72 818,-72 824,-72 830,-78 830,-84 830,-84 830,-128 830,-128 830,-134 824,-140 818,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"698\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">return_12m ≤ &#45;0.049</text>\n",
       "<text text-anchor=\"start\" x=\"722\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"711.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 8695</text>\n",
       "<text text-anchor=\"start\" x=\"719\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.027</text>\n",
       "</g>\n",
       "<!-- 33&#45;&gt;41 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>33&#45;&gt;41</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M690.44,-175.88C699.62,-166.8 709.67,-156.85 719.2,-147.4\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"721.73,-149.82 726.37,-140.3 716.81,-144.85 721.73,-149.82\"/>\n",
       "</g>\n",
       "<!-- 35 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>35</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M623,-36C623,-36 593,-36 593,-36 587,-36 581,-30 581,-24 581,-24 581,-12 581,-12 581,-6 587,0 593,0 593,0 623,0 623,0 629,0 635,-6 635,-12 635,-12 635,-24 635,-24 635,-30 629,-36 623,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"608\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 34&#45;&gt;35 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>34&#45;&gt;35</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M614.78,-72C613.7,-63.56 612.55,-54.59 611.51,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"614.97,-45.88 610.23,-36.4 608.02,-46.77 614.97,-45.88\"/>\n",
       "</g>\n",
       "<!-- 38 -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>38</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M695,-36C695,-36 665,-36 665,-36 659,-36 653,-30 653,-24 653,-24 653,-12 653,-12 653,-6 659,0 665,0 665,0 695,0 695,0 701,0 707,-6 707,-12 707,-12 707,-24 707,-24 707,-30 701,-36 695,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"680\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 34&#45;&gt;38 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>34&#45;&gt;38</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M642.41,-72C648.86,-62.9 655.76,-53.18 661.86,-44.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"664.73,-46.58 667.66,-36.4 659.02,-42.53 664.73,-46.58\"/>\n",
       "</g>\n",
       "<!-- 42 -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>42</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M767,-36C767,-36 737,-36 737,-36 731,-36 725,-30 725,-24 725,-24 725,-12 725,-12 725,-6 731,0 737,0 737,0 767,0 767,0 773,0 779,-6 779,-12 779,-12 779,-24 779,-24 779,-30 773,-36 767,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"752\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 41&#45;&gt;42 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>41&#45;&gt;42</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M756.93,-72C756.15,-63.56 755.31,-54.59 754.56,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"758.03,-46.04 753.62,-36.4 751.06,-46.68 758.03,-46.04\"/>\n",
       "</g>\n",
       "<!-- 45 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>45</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M839,-36C839,-36 809,-36 809,-36 803,-36 797,-30 797,-24 797,-24 797,-12 797,-12 797,-6 803,0 809,0 809,0 839,0 839,0 845,0 851,-6 851,-12 851,-12 851,-24 851,-24 851,-30 845,-36 839,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"824\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 41&#45;&gt;45 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>41&#45;&gt;45</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M784.56,-72C791.33,-62.9 798.57,-53.18 804.97,-44.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"807.89,-46.52 811.05,-36.4 802.27,-42.34 807.89,-46.52\"/>\n",
       "</g>\n",
       "<!-- 49 -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>49</title>\n",
       "<path fill=\"#f2be99\" stroke=\"black\" d=\"M949.5,-140C949.5,-140 860.5,-140 860.5,-140 854.5,-140 848.5,-134 848.5,-128 848.5,-128 848.5,-84 848.5,-84 848.5,-78 854.5,-72 860.5,-72 860.5,-72 949.5,-72 949.5,-72 955.5,-72 961.5,-78 961.5,-84 961.5,-84 961.5,-128 961.5,-128 961.5,-134 955.5,-140 949.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"863\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2012.5</text>\n",
       "<text text-anchor=\"start\" x=\"867\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.006</text>\n",
       "<text text-anchor=\"start\" x=\"856.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5841</text>\n",
       "<text text-anchor=\"start\" x=\"861.5\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = &#45;0.005</text>\n",
       "</g>\n",
       "<!-- 48&#45;&gt;49 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>48&#45;&gt;49</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M905,-175.88C905,-167.78 905,-158.98 905,-150.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"908.5,-150.3 905,-140.3 901.5,-150.3 908.5,-150.3\"/>\n",
       "</g>\n",
       "<!-- 56 -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>56</title>\n",
       "<path fill=\"#f1ba92\" stroke=\"black\" d=\"M1088.5,-140C1088.5,-140 991.5,-140 991.5,-140 985.5,-140 979.5,-134 979.5,-128 979.5,-128 979.5,-84 979.5,-84 979.5,-78 985.5,-72 991.5,-72 991.5,-72 1088.5,-72 1088.5,-72 1094.5,-72 1100.5,-78 1100.5,-84 1100.5,-84 1100.5,-128 1100.5,-128 1100.5,-134 1094.5,-140 1088.5,-140\"/>\n",
       "<text text-anchor=\"start\" x=\"998\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2010.5</text>\n",
       "<text text-anchor=\"start\" x=\"1002\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">mse = 0.007</text>\n",
       "<text text-anchor=\"start\" x=\"987.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 20330</text>\n",
       "<text text-anchor=\"start\" x=\"999\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = 0.014</text>\n",
       "</g>\n",
       "<!-- 48&#45;&gt;56 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>48&#45;&gt;56</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M948.83,-175.88C961.21,-166.53 974.8,-156.26 987.63,-146.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"990.06,-149.12 995.93,-140.3 985.84,-143.54 990.06,-149.12\"/>\n",
       "</g>\n",
       "<!-- 50 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>50</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M911,-36C911,-36 881,-36 881,-36 875,-36 869,-30 869,-24 869,-24 869,-12 869,-12 869,-6 875,0 881,0 881,0 911,0 911,0 917,0 923,-6 923,-12 923,-12 923,-24 923,-24 923,-30 917,-36 911,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"896\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 49&#45;&gt;50 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>49&#45;&gt;50</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M901.55,-72C900.66,-63.56 899.72,-54.59 898.87,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"902.34,-45.98 897.82,-36.4 895.38,-46.71 902.34,-45.98\"/>\n",
       "</g>\n",
       "<!-- 53 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>53</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M983,-36C983,-36 953,-36 953,-36 947,-36 941,-30 941,-24 941,-24 941,-12 941,-12 941,-6 947,0 953,0 953,0 983,0 983,0 989,0 995,-6 995,-12 995,-12 995,-24 995,-24 995,-30 989,-36 983,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"968\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 49&#45;&gt;53 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>49&#45;&gt;53</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M929.18,-72C935.84,-62.9 942.96,-53.18 949.27,-44.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"952.16,-46.54 955.25,-36.4 946.52,-42.4 952.16,-46.54\"/>\n",
       "</g>\n",
       "<!-- 57 -->\n",
       "<g id=\"node30\" class=\"node\">\n",
       "<title>57</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M1055,-36C1055,-36 1025,-36 1025,-36 1019,-36 1013,-30 1013,-24 1013,-24 1013,-12 1013,-12 1013,-6 1019,0 1025,0 1025,0 1055,0 1055,0 1061,0 1067,-6 1067,-12 1067,-12 1067,-24 1067,-24 1067,-30 1061,-36 1055,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"1040\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 56&#45;&gt;57 -->\n",
       "<g id=\"edge29\" class=\"edge\">\n",
       "<title>56&#45;&gt;57</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040,-72C1040,-63.56 1040,-54.59 1040,-46.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1043.5,-46.4 1040,-36.4 1036.5,-46.4 1043.5,-46.4\"/>\n",
       "</g>\n",
       "<!-- 60 -->\n",
       "<g id=\"node31\" class=\"node\">\n",
       "<title>60</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M1127,-36C1127,-36 1097,-36 1097,-36 1091,-36 1085,-30 1085,-24 1085,-24 1085,-12 1085,-12 1085,-6 1091,0 1097,0 1097,0 1127,0 1127,0 1133,0 1139,-6 1139,-12 1139,-12 1139,-24 1139,-24 1139,-30 1133,-36 1127,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"1112\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 56&#45;&gt;60 -->\n",
       "<g id=\"edge30\" class=\"edge\">\n",
       "<title>56&#45;&gt;60</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1067.63,-72C1075.32,-62.81 1083.56,-52.97 1090.82,-44.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1093.69,-46.32 1097.43,-36.4 1088.33,-41.82 1093.69,-46.32\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7f29a6f40110>"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out_file = results_path / 'reg_tree.dot'\n",
    "dot_data = export_graphviz(regression_tree,\n",
    "                           out_file=out_file.as_posix(),\n",
    "                           feature_names=X_train.columns,\n",
    "                           max_depth=3,\n",
    "                           filled=True,\n",
    "                           rounded=True,\n",
    "                           special_characters=True)\n",
    "if out_file is not None:\n",
    "    dot_data = Path(out_file).read_text()\n",
    "\n",
    "graphviz.Source(dot_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Test Set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.823483Z",
     "start_time": "2020-06-19T13:47:53.816647Z"
    }
   },
   "outputs": [],
   "source": [
    "y_pred = regression_tree.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.831945Z",
     "start_time": "2020-06-19T13:47:53.824728Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.08086872759273504"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.sqrt(mean_squared_error(y_pred=y_pred, y_true=y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.842734Z",
     "start_time": "2020-06-19T13:47:53.833189Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "27.73 (p-value=0.00%)\n"
     ]
    }
   ],
   "source": [
    "r, p = spearmanr(y_pred, y_test)\n",
    "print(f'{r*100:.2f} (p-value={p:.2%})')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Classification Tree with all Features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will now train, visualize, and evaluate a classification tree with up to 5 consecutive splits using 80% of the samples for training to predict the remaining 20%. We are taking a shortcut here to simplify the illustration and use the built-in train_test_split, which does not protect against lookahead bias, as our custom iterator. The tree configuration implies up to $2^5=32$ leaf nodes that, on average in the balanced case, would contain over 4,300 of the training samples."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train-Test Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.851095Z",
     "start_time": "2020-06-19T13:47:53.843917Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    31889\n",
       "0    24867\n",
       "Name: target, dtype: int64"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_binary = (y>0).astype(int)\n",
    "y_binary.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.868513Z",
     "start_time": "2020-06-19T13:47:53.852758Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y_binary, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:53.871662Z",
     "start_time": "2020-06-19T13:47:53.869716Z"
    }
   },
   "outputs": [],
   "source": [
    "clf = DecisionTreeClassifier(criterion='gini',\n",
    "                             max_depth=5,\n",
    "                             random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.362555Z",
     "start_time": "2020-06-19T13:47:53.872986Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(max_depth=5, random_state=42)"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.fit(X=X_train, y=y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.401755Z",
     "start_time": "2020-06-19T13:47:54.363801Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.42.3 (20191010.1750)\n",
       " -->\n",
       "<!-- Title: Tree Pages: 1 -->\n",
       "<svg width=\"1235pt\" height=\"520pt\"\n",
       " viewBox=\"0.00 0.00 1235.00 520.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 516)\">\n",
       "<title>Tree</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-516 1231,-516 1231,4 -4,4\"/>\n",
       "<!-- 0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>0</title>\n",
       "<path fill=\"#d3e9f9\" stroke=\"black\" d=\"M672.5,-512C672.5,-512 541.5,-512 541.5,-512 535.5,-512 529.5,-506 529.5,-500 529.5,-500 529.5,-441 529.5,-441 529.5,-435 535.5,-429 541.5,-429 541.5,-429 672.5,-429 672.5,-429 678.5,-429 684.5,-435 684.5,-441 684.5,-441 684.5,-500 684.5,-500 684.5,-506 678.5,-512 672.5,-512\"/>\n",
       "<text text-anchor=\"start\" x=\"570.5\" y=\"-496.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 3.5</text>\n",
       "<text text-anchor=\"start\" x=\"571.5\" y=\"-481.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.492</text>\n",
       "<text text-anchor=\"start\" x=\"554.5\" y=\"-466.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 45404</text>\n",
       "<text text-anchor=\"start\" x=\"537.5\" y=\"-451.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [19828, 25576]</text>\n",
       "<text text-anchor=\"start\" x=\"575\" y=\"-436.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>1</title>\n",
       "<path fill=\"#a9d4f4\" stroke=\"black\" d=\"M511,-393C511,-393 395,-393 395,-393 389,-393 383,-387 383,-381 383,-381 383,-322 383,-322 383,-316 389,-310 395,-310 395,-310 511,-310 511,-310 517,-310 523,-316 523,-322 523,-322 523,-381 523,-381 523,-387 517,-393 511,-393\"/>\n",
       "<text text-anchor=\"start\" x=\"411\" y=\"-377.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2008.5</text>\n",
       "<text text-anchor=\"start\" x=\"417.5\" y=\"-362.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.461</text>\n",
       "<text text-anchor=\"start\" x=\"400.5\" y=\"-347.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 11416</text>\n",
       "<text text-anchor=\"start\" x=\"391\" y=\"-332.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4115, 7301]</text>\n",
       "<text text-anchor=\"start\" x=\"421\" y=\"-317.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>0&#45;&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M553.57,-428.91C540.91,-419.29 527.31,-408.95 514.32,-399.09\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"516.42,-396.28 506.34,-393.02 512.18,-401.86 516.42,-396.28\"/>\n",
       "<text text-anchor=\"middle\" x=\"509.72\" y=\"-414.09\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n",
       "</g>\n",
       "<!-- 32 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>32</title>\n",
       "<path fill=\"#e3f1fb\" stroke=\"black\" d=\"M829.5,-393C829.5,-393 698.5,-393 698.5,-393 692.5,-393 686.5,-387 686.5,-381 686.5,-381 686.5,-322 686.5,-322 686.5,-316 692.5,-310 698.5,-310 698.5,-310 829.5,-310 829.5,-310 835.5,-310 841.5,-316 841.5,-322 841.5,-322 841.5,-381 841.5,-381 841.5,-387 835.5,-393 829.5,-393\"/>\n",
       "<text text-anchor=\"start\" x=\"727.5\" y=\"-377.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">natr ≤ 3.403</text>\n",
       "<text text-anchor=\"start\" x=\"728.5\" y=\"-362.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.497</text>\n",
       "<text text-anchor=\"start\" x=\"711.5\" y=\"-347.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 33988</text>\n",
       "<text text-anchor=\"start\" x=\"694.5\" y=\"-332.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [15713, 18275]</text>\n",
       "<text text-anchor=\"start\" x=\"732\" y=\"-317.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;32 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>0&#45;&gt;32</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M661.47,-428.91C674.38,-419.29 688.25,-408.95 701.48,-399.09\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"703.7,-401.8 709.63,-393.02 699.52,-396.19 703.7,-401.8\"/>\n",
       "<text text-anchor=\"middle\" x=\"706.01\" y=\"-414.06\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2</title>\n",
       "<path fill=\"#cbe5f8\" stroke=\"black\" d=\"M282,-274C282,-274 166,-274 166,-274 160,-274 154,-268 154,-262 154,-262 154,-203 154,-203 154,-197 160,-191 166,-191 166,-191 282,-191 282,-191 288,-191 294,-197 294,-203 294,-203 294,-262 294,-262 294,-268 288,-274 282,-274\"/>\n",
       "<text text-anchor=\"start\" x=\"187.5\" y=\"-258.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 2.5</text>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-243.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.489</text>\n",
       "<text text-anchor=\"start\" x=\"175.5\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2583</text>\n",
       "<text text-anchor=\"start\" x=\"162\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1098, 1485]</text>\n",
       "<text text-anchor=\"start\" x=\"192\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M382.74,-314.6C357.57,-301.74 329.03,-287.16 303.16,-273.94\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"304.63,-270.76 294.13,-269.33 301.44,-277 304.63,-270.76\"/>\n",
       "</g>\n",
       "<!-- 17 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>17</title>\n",
       "<path fill=\"#a0d0f2\" stroke=\"black\" d=\"M511,-274C511,-274 395,-274 395,-274 389,-274 383,-268 383,-262 383,-262 383,-203 383,-203 383,-197 389,-191 395,-191 395,-191 511,-191 511,-191 517,-191 523,-197 523,-203 523,-203 523,-262 523,-262 523,-268 517,-274 511,-274\"/>\n",
       "<text text-anchor=\"start\" x=\"397\" y=\"-258.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">return_6m ≤ 0.025</text>\n",
       "<text text-anchor=\"start\" x=\"421\" y=\"-243.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.45</text>\n",
       "<text text-anchor=\"start\" x=\"404.5\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 8833</text>\n",
       "<text text-anchor=\"start\" x=\"391\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3017, 5816]</text>\n",
       "<text text-anchor=\"start\" x=\"421\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;17 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>1&#45;&gt;17</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M453,-309.91C453,-301.65 453,-292.86 453,-284.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"456.5,-284.02 453,-274.02 449.5,-284.02 456.5,-284.02\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>3</title>\n",
       "<path fill=\"#f7fbfe\" stroke=\"black\" d=\"M131.5,-155C131.5,-155 30.5,-155 30.5,-155 24.5,-155 18.5,-149 18.5,-143 18.5,-143 18.5,-84 18.5,-84 18.5,-78 24.5,-72 30.5,-72 30.5,-72 131.5,-72 131.5,-72 137.5,-72 143.5,-78 143.5,-84 143.5,-84 143.5,-143 143.5,-143 143.5,-149 137.5,-155 131.5,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"48\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">atr ≤ 0.157</text>\n",
       "<text text-anchor=\"start\" x=\"53\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.5</text>\n",
       "<text text-anchor=\"start\" x=\"32.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1717</text>\n",
       "<text text-anchor=\"start\" x=\"26.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [840, 877]</text>\n",
       "<text text-anchor=\"start\" x=\"49\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M174.39,-190.91C162.74,-181.38 150.24,-171.15 138.29,-161.37\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"140.48,-158.64 130.53,-155.02 136.05,-164.06 140.48,-158.64\"/>\n",
       "</g>\n",
       "<!-- 10 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>10</title>\n",
       "<path fill=\"#8dc7f0\" stroke=\"black\" d=\"M274.5,-155C274.5,-155 173.5,-155 173.5,-155 167.5,-155 161.5,-149 161.5,-143 161.5,-143 161.5,-84 161.5,-84 161.5,-78 167.5,-72 173.5,-72 173.5,-72 274.5,-72 274.5,-72 280.5,-72 286.5,-78 286.5,-84 286.5,-84 286.5,-143 286.5,-143 286.5,-149 280.5,-155 274.5,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"182\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2006.5</text>\n",
       "<text text-anchor=\"start\" x=\"188.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.418</text>\n",
       "<text text-anchor=\"start\" x=\"179\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 866</text>\n",
       "<text text-anchor=\"start\" x=\"169.5\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [258, 608]</text>\n",
       "<text text-anchor=\"start\" x=\"192\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;10 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2&#45;&gt;10</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M224,-190.91C224,-182.65 224,-173.86 224,-165.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"227.5,-165.02 224,-155.02 220.5,-165.02 227.5,-165.02\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>4</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M42,-36C42,-36 12,-36 12,-36 6,-36 0,-30 0,-24 0,-24 0,-12 0,-12 0,-6 6,0 12,0 12,0 42,0 42,0 48,0 54,-6 54,-12 54,-12 54,-24 54,-24 54,-30 48,-36 42,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57.47,-71.76C52.27,-62.75 46.89,-53.44 42.13,-45.19\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"45.08,-43.31 37.05,-36.41 39.02,-46.82 45.08,-43.31\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>7</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M114,-36C114,-36 84,-36 84,-36 78,-36 72,-30 72,-24 72,-24 72,-12 72,-12 72,-6 78,0 84,0 84,0 114,0 114,0 120,0 126,-6 126,-12 126,-12 126,-24 126,-24 126,-30 120,-36 114,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;7 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M88.84,-71.76C90.5,-63.14 92.22,-54.24 93.75,-46.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"97.2,-46.89 95.65,-36.41 90.32,-45.56 97.2,-46.89\"/>\n",
       "</g>\n",
       "<!-- 11 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>11</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M221,-36C221,-36 191,-36 191,-36 185,-36 179,-30 179,-24 179,-24 179,-12 179,-12 179,-6 185,0 191,0 191,0 221,0 221,0 227,0 233,-6 233,-12 233,-12 233,-24 233,-24 233,-30 227,-36 221,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"206\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;11 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>10&#45;&gt;11</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M216.16,-71.76C214.5,-63.14 212.78,-54.24 211.25,-46.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"214.68,-45.56 209.35,-36.41 207.8,-46.89 214.68,-45.56\"/>\n",
       "</g>\n",
       "<!-- 14 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>14</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M293,-36C293,-36 263,-36 263,-36 257,-36 251,-30 251,-24 251,-24 251,-12 251,-12 251,-6 257,0 263,0 263,0 293,0 293,0 299,0 305,-6 305,-12 305,-12 305,-24 305,-24 305,-30 299,-36 293,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"278\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;14 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>10&#45;&gt;14</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M247.53,-71.76C252.73,-62.75 258.11,-53.44 262.87,-45.19\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"265.98,-46.82 267.95,-36.41 259.92,-43.31 265.98,-46.82\"/>\n",
       "</g>\n",
       "<!-- 18 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>18</title>\n",
       "<path fill=\"#94caf1\" stroke=\"black\" d=\"M433,-155C433,-155 317,-155 317,-155 311,-155 305,-149 305,-143 305,-143 305,-84 305,-84 305,-78 311,-72 317,-72 317,-72 433,-72 433,-72 439,-72 445,-78 445,-84 445,-84 445,-143 445,-143 445,-149 439,-155 433,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"315\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">return_12m ≤ 0.023</text>\n",
       "<text text-anchor=\"start\" x=\"339.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.432</text>\n",
       "<text text-anchor=\"start\" x=\"326.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5887</text>\n",
       "<text text-anchor=\"start\" x=\"313\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1858, 4029]</text>\n",
       "<text text-anchor=\"start\" x=\"343\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;18 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>17&#45;&gt;18</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M425.94,-190.91C420.07,-182.1 413.8,-172.7 407.74,-163.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"410.47,-161.4 402.01,-155.02 404.65,-165.28 410.47,-161.4\"/>\n",
       "</g>\n",
       "<!-- 25 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>25</title>\n",
       "<path fill=\"#b9ddf6\" stroke=\"black\" d=\"M591,-155C591,-155 475,-155 475,-155 469,-155 463,-149 463,-143 463,-143 463,-84 463,-84 463,-78 469,-72 475,-72 475,-72 591,-72 591,-72 597,-72 603,-78 603,-84 603,-84 603,-143 603,-143 603,-149 597,-155 591,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"496.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 2.5</text>\n",
       "<text text-anchor=\"start\" x=\"497.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.477</text>\n",
       "<text text-anchor=\"start\" x=\"484.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2946</text>\n",
       "<text text-anchor=\"start\" x=\"471\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1159, 1787]</text>\n",
       "<text text-anchor=\"start\" x=\"501\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;25 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>17&#45;&gt;25</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M480.76,-190.91C486.84,-182.01 493.34,-172.51 499.61,-163.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"502.54,-165.25 505.29,-155.02 496.76,-161.3 502.54,-165.25\"/>\n",
       "</g>\n",
       "<!-- 19 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>19</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M368,-36C368,-36 338,-36 338,-36 332,-36 326,-30 326,-24 326,-24 326,-12 326,-12 326,-6 332,0 338,0 338,0 368,0 368,0 374,0 380,-6 380,-12 380,-12 380,-24 380,-24 380,-30 374,-36 368,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"353\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;19 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>18&#45;&gt;19</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M365.41,-71.76C363.39,-63.14 361.29,-54.24 359.41,-46.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"362.79,-45.34 357.1,-36.41 355.98,-46.94 362.79,-45.34\"/>\n",
       "</g>\n",
       "<!-- 22 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>22</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M440,-36C440,-36 410,-36 410,-36 404,-36 398,-30 398,-24 398,-24 398,-12 398,-12 398,-6 404,0 410,0 410,0 440,0 440,0 446,0 452,-6 452,-12 452,-12 452,-24 452,-24 452,-30 446,-36 440,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"425\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;22 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>18&#45;&gt;22</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M396.79,-71.76C401.55,-62.85 406.48,-53.64 410.85,-45.46\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"414.06,-46.87 415.69,-36.41 407.89,-43.57 414.06,-46.87\"/>\n",
       "</g>\n",
       "<!-- 26 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>26</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M521,-36C521,-36 491,-36 491,-36 485,-36 479,-30 479,-24 479,-24 479,-12 479,-12 479,-6 485,0 491,0 491,0 521,0 521,0 527,0 533,-6 533,-12 533,-12 533,-24 533,-24 533,-30 527,-36 521,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"506\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;26 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>25&#45;&gt;26</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M521.24,-71.76C518.75,-63.14 516.18,-54.24 513.87,-46.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"517.16,-45.04 511.03,-36.41 510.44,-46.98 517.16,-45.04\"/>\n",
       "</g>\n",
       "<!-- 29 -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>29</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M593,-36C593,-36 563,-36 563,-36 557,-36 551,-30 551,-24 551,-24 551,-12 551,-12 551,-6 557,0 563,0 563,0 593,0 593,0 599,0 605,-6 605,-12 605,-12 605,-24 605,-24 605,-30 599,-36 593,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"578\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;29 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>25&#45;&gt;29</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M552.61,-71.76C556.9,-62.85 561.33,-53.64 565.27,-45.46\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"568.44,-46.93 569.62,-36.41 562.13,-43.9 568.44,-46.93\"/>\n",
       "</g>\n",
       "<!-- 33 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>33</title>\n",
       "<path fill=\"#d5eafa\" stroke=\"black\" d=\"M829.5,-274C829.5,-274 698.5,-274 698.5,-274 692.5,-274 686.5,-268 686.5,-262 686.5,-262 686.5,-203 686.5,-203 686.5,-197 692.5,-191 698.5,-191 698.5,-191 829.5,-191 829.5,-191 835.5,-191 841.5,-197 841.5,-203 841.5,-203 841.5,-262 841.5,-262 841.5,-268 835.5,-274 829.5,-274\"/>\n",
       "<text text-anchor=\"start\" x=\"727.5\" y=\"-258.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 7.5</text>\n",
       "<text text-anchor=\"start\" x=\"728.5\" y=\"-243.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.493</text>\n",
       "<text text-anchor=\"start\" x=\"711.5\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 26706</text>\n",
       "<text text-anchor=\"start\" x=\"694.5\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [11786, 14920]</text>\n",
       "<text text-anchor=\"start\" x=\"732\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 32&#45;&gt;33 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>32&#45;&gt;33</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M764,-309.91C764,-301.65 764,-292.86 764,-284.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"767.5,-284.02 764,-274.02 760.5,-284.02 767.5,-284.02\"/>\n",
       "</g>\n",
       "<!-- 48 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>48</title>\n",
       "<path fill=\"#fbede2\" stroke=\"black\" d=\"M1061,-274C1061,-274 945,-274 945,-274 939,-274 933,-268 933,-262 933,-262 933,-203 933,-203 933,-197 939,-191 945,-191 945,-191 1061,-191 1061,-191 1067,-191 1073,-197 1073,-203 1073,-203 1073,-262 1073,-262 1073,-268 1067,-274 1061,-274\"/>\n",
       "<text text-anchor=\"start\" x=\"961\" y=\"-258.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2008.5</text>\n",
       "<text text-anchor=\"start\" x=\"967.5\" y=\"-243.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.497</text>\n",
       "<text text-anchor=\"start\" x=\"954.5\" y=\"-228.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 7282</text>\n",
       "<text text-anchor=\"start\" x=\"941\" y=\"-213.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3927, 3355]</text>\n",
       "<text text-anchor=\"start\" x=\"962\" y=\"-198.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Down</text>\n",
       "</g>\n",
       "<!-- 32&#45;&gt;48 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>32&#45;&gt;48</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M841.6,-312.51C867.81,-299.68 897.1,-285.34 923.47,-272.43\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"925.22,-275.48 932.66,-267.93 922.14,-269.19 925.22,-275.48\"/>\n",
       "</g>\n",
       "<!-- 34 -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>34</title>\n",
       "<path fill=\"#fafcfe\" stroke=\"black\" d=\"M749,-155C749,-155 633,-155 633,-155 627,-155 621,-149 621,-143 621,-143 621,-84 621,-84 621,-78 627,-72 633,-72 633,-72 749,-72 749,-72 755,-72 761,-78 761,-84 761,-84 761,-143 761,-143 761,-149 755,-155 749,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"649\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">year ≤ 2011.5</text>\n",
       "<text text-anchor=\"start\" x=\"663\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.5</text>\n",
       "<text text-anchor=\"start\" x=\"638.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 12105</text>\n",
       "<text text-anchor=\"start\" x=\"629\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [5969, 6136]</text>\n",
       "<text text-anchor=\"start\" x=\"659\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 33&#45;&gt;34 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>33&#45;&gt;34</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M738.67,-190.91C733.18,-182.1 727.31,-172.7 721.64,-163.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"724.55,-161.65 716.28,-155.02 718.61,-165.36 724.55,-161.65\"/>\n",
       "</g>\n",
       "<!-- 41 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>41</title>\n",
       "<path fill=\"#bcdef6\" stroke=\"black\" d=\"M907,-155C907,-155 791,-155 791,-155 785,-155 779,-149 779,-143 779,-143 779,-84 779,-84 779,-78 785,-72 791,-72 791,-72 907,-72 907,-72 913,-72 919,-78 919,-84 919,-84 919,-143 919,-143 919,-149 913,-155 907,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"808.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 11.5</text>\n",
       "<text text-anchor=\"start\" x=\"813.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.479</text>\n",
       "<text text-anchor=\"start\" x=\"796.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 14601</text>\n",
       "<text text-anchor=\"start\" x=\"787\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [5817, 8784]</text>\n",
       "<text text-anchor=\"start\" x=\"817\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 33&#45;&gt;41 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>33&#45;&gt;41</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M793.49,-190.91C799.95,-182.01 806.86,-172.51 813.52,-163.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"816.52,-165.17 819.56,-155.02 810.85,-161.05 816.52,-165.17\"/>\n",
       "</g>\n",
       "<!-- 35 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>35</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M676,-36C676,-36 646,-36 646,-36 640,-36 634,-30 634,-24 634,-24 634,-12 634,-12 634,-6 640,0 646,0 646,0 676,0 676,0 682,0 688,-6 688,-12 688,-12 688,-24 688,-24 688,-30 682,-36 676,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"661\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 34&#45;&gt;35 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>34&#45;&gt;35</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M677.93,-71.76C675.13,-63.04 672.24,-54.04 669.66,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"672.97,-44.86 666.58,-36.41 666.31,-47 672.97,-44.86\"/>\n",
       "</g>\n",
       "<!-- 38 -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>38</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M748,-36C748,-36 718,-36 718,-36 712,-36 706,-30 706,-24 706,-24 706,-12 706,-12 706,-6 712,0 718,0 718,0 748,0 748,0 754,0 760,-6 760,-12 760,-12 760,-24 760,-24 760,-30 754,-36 748,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"733\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 34&#45;&gt;38 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>34&#45;&gt;38</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M709.3,-71.76C713.26,-62.94 717.35,-53.84 721,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"724.28,-46.96 725.18,-36.41 717.89,-44.09 724.28,-46.96\"/>\n",
       "</g>\n",
       "<!-- 42 -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>42</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M833,-36C833,-36 803,-36 803,-36 797,-36 791,-30 791,-24 791,-24 791,-12 791,-12 791,-6 797,0 803,0 803,0 833,0 833,0 839,0 845,-6 845,-12 845,-12 845,-24 845,-24 845,-30 839,-36 833,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"818\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 41&#45;&gt;42 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>41&#45;&gt;42</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M835.49,-71.76C832.6,-63.04 829.62,-54.04 826.95,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"830.24,-44.8 823.77,-36.41 823.6,-47 830.24,-44.8\"/>\n",
       "</g>\n",
       "<!-- 45 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>45</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M905,-36C905,-36 875,-36 875,-36 869,-36 863,-30 863,-24 863,-24 863,-12 863,-12 863,-6 869,0 875,0 875,0 905,0 905,0 911,0 917,-6 917,-12 917,-12 917,-24 917,-24 917,-30 911,-36 905,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"890\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 41&#45;&gt;45 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>41&#45;&gt;45</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M866.86,-71.76C870.73,-62.94 874.72,-53.84 878.28,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"881.56,-46.97 882.37,-36.41 875.15,-44.16 881.56,-46.97\"/>\n",
       "</g>\n",
       "<!-- 49 -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>49</title>\n",
       "<path fill=\"#f4ccae\" stroke=\"black\" d=\"M1057,-155C1057,-155 949,-155 949,-155 943,-155 937,-149 937,-143 937,-143 937,-84 937,-84 937,-78 943,-72 949,-72 949,-72 1057,-72 1057,-72 1063,-72 1069,-78 1069,-84 1069,-84 1069,-143 1069,-143 1069,-149 1063,-155 1057,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"966.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">month ≤ 7.5</text>\n",
       "<text text-anchor=\"start\" x=\"967.5\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.467</text>\n",
       "<text text-anchor=\"start\" x=\"954.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2568</text>\n",
       "<text text-anchor=\"start\" x=\"945\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1613, 955]</text>\n",
       "<text text-anchor=\"start\" x=\"962\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Down</text>\n",
       "</g>\n",
       "<!-- 48&#45;&gt;49 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>48&#45;&gt;49</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1003,-190.91C1003,-182.65 1003,-173.86 1003,-165.3\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1006.5,-165.02 1003,-155.02 999.5,-165.02 1006.5,-165.02\"/>\n",
       "</g>\n",
       "<!-- 56 -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>56</title>\n",
       "<path fill=\"#f8fbfe\" stroke=\"black\" d=\"M1215,-155C1215,-155 1099,-155 1099,-155 1093,-155 1087,-149 1087,-143 1087,-143 1087,-84 1087,-84 1087,-78 1093,-72 1099,-72 1099,-72 1215,-72 1215,-72 1221,-72 1227,-78 1227,-84 1227,-84 1227,-143 1227,-143 1227,-149 1221,-155 1215,-155\"/>\n",
       "<text text-anchor=\"start\" x=\"1104.5\" y=\"-139.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">bb_down ≤ 0.052</text>\n",
       "<text text-anchor=\"start\" x=\"1129\" y=\"-124.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">gini = 0.5</text>\n",
       "<text text-anchor=\"start\" x=\"1108.5\" y=\"-109.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 4714</text>\n",
       "<text text-anchor=\"start\" x=\"1095\" y=\"-94.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [2314, 2400]</text>\n",
       "<text text-anchor=\"start\" x=\"1125\" y=\"-79.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = Up</text>\n",
       "</g>\n",
       "<!-- 48&#45;&gt;56 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>48&#45;&gt;56</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1056.43,-190.91C1069.09,-181.29 1082.69,-170.95 1095.68,-161.09\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1097.82,-163.86 1103.66,-155.02 1093.58,-158.28 1097.82,-163.86\"/>\n",
       "</g>\n",
       "<!-- 50 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>50</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M988,-36C988,-36 958,-36 958,-36 952,-36 946,-30 946,-24 946,-24 946,-12 946,-12 946,-6 952,0 958,0 958,0 988,0 988,0 994,0 1000,-6 1000,-12 1000,-12 1000,-24 1000,-24 1000,-30 994,-36 988,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"973\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 49&#45;&gt;50 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>49&#45;&gt;50</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M989.93,-71.76C987.13,-63.04 984.24,-54.04 981.66,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"984.97,-44.86 978.58,-36.41 978.31,-47 984.97,-44.86\"/>\n",
       "</g>\n",
       "<!-- 53 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>53</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M1060,-36C1060,-36 1030,-36 1030,-36 1024,-36 1018,-30 1018,-24 1018,-24 1018,-12 1018,-12 1018,-6 1024,0 1030,0 1030,0 1060,0 1060,0 1066,0 1072,-6 1072,-12 1072,-12 1072,-24 1072,-24 1072,-30 1066,-36 1060,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"1045\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 49&#45;&gt;53 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>49&#45;&gt;53</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1021.3,-71.76C1025.26,-62.94 1029.35,-53.84 1033,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1036.28,-46.96 1037.18,-36.41 1029.89,-44.09 1036.28,-46.96\"/>\n",
       "</g>\n",
       "<!-- 57 -->\n",
       "<g id=\"node30\" class=\"node\">\n",
       "<title>57</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M1143,-36C1143,-36 1113,-36 1113,-36 1107,-36 1101,-30 1101,-24 1101,-24 1101,-12 1101,-12 1101,-6 1107,0 1113,0 1113,0 1143,0 1143,0 1149,0 1155,-6 1155,-12 1155,-12 1155,-24 1155,-24 1155,-30 1149,-36 1143,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"1128\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 56&#45;&gt;57 -->\n",
       "<g id=\"edge29\" class=\"edge\">\n",
       "<title>56&#45;&gt;57</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1144.36,-71.76C1141.66,-63.04 1138.87,-54.04 1136.37,-45.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1139.7,-44.92 1133.4,-36.41 1133.02,-46.99 1139.7,-44.92\"/>\n",
       "</g>\n",
       "<!-- 60 -->\n",
       "<g id=\"node31\" class=\"node\">\n",
       "<title>60</title>\n",
       "<path fill=\"#c0c0c0\" stroke=\"black\" d=\"M1215,-36C1215,-36 1185,-36 1185,-36 1179,-36 1173,-30 1173,-24 1173,-24 1173,-12 1173,-12 1173,-6 1179,0 1185,0 1185,0 1215,0 1215,0 1221,0 1227,-6 1227,-12 1227,-12 1227,-24 1227,-24 1227,-30 1221,-36 1215,-36\"/>\n",
       "<text text-anchor=\"middle\" x=\"1200\" y=\"-14.3\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">(...)</text>\n",
       "</g>\n",
       "<!-- 56&#45;&gt;60 -->\n",
       "<g id=\"edge30\" class=\"edge\">\n",
       "<title>56&#45;&gt;60</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1175.74,-71.76C1179.79,-62.94 1183.98,-53.84 1187.71,-45.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1191,-46.95 1192,-36.41 1184.64,-44.03 1191,-46.95\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7f29af9886d0>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out_file = results_path / 'clf_tree.dot'\n",
    "dot_data = export_graphviz(clf,\n",
    "                           out_file=out_file.as_posix(),\n",
    "                           feature_names=X.columns,\n",
    "                           class_names=['Down', 'Up'],\n",
    "                           max_depth=3,\n",
    "                           filled=True,\n",
    "                           rounded=True,\n",
    "                           special_characters=True)\n",
    "if out_file is not None:\n",
    "    dot_data = Path(out_file).read_text()\n",
    "\n",
    "graphviz.Source(dot_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Test Set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To evaluate the predictive accuracy of our first classification tree, we will use our test set to generate predicted class probabilities. \n",
    "\n",
    "The `.predict_proba()` method produces one probability for each class. In the binary class, these probabilities are complementary and sum to 1, so we only need the value for the positive class. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.408859Z",
     "start_time": "2020-06-19T13:47:54.403090Z"
    }
   },
   "outputs": [],
   "source": [
    "y_score = clf.predict_proba(X=X_test)[:, 1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To evaluate the generalization error, we will use the area under the curve based on the receiver-operating characteristic that we introduced in Chapter 6, The Machine Learning Process. The result indicates a significant improvement above and beyond the baseline value of 0.5 for a random prediction:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.418644Z",
     "start_time": "2020-06-19T13:47:54.409881Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6314068026403399"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y_score=y_score, y_true=y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Print Decision Path"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Inspired by https://stackoverflow.com/questions/20224526/how-to-extract-the-decision-rules-from-scikit-learn-decision-tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.426010Z",
     "start_time": "2020-06-19T13:47:54.419603Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on class Tree in module sklearn.tree._tree:\n",
      "\n",
      "class Tree(builtins.object)\n",
      " |  Array-based representation of a binary decision tree.\n",
      " |  \n",
      " |  The binary tree is represented as a number of parallel arrays. The i-th\n",
      " |  element of each array holds information about the node `i`. Node 0 is the\n",
      " |  tree's root. You can find a detailed description of all arrays in\n",
      " |  `_tree.pxd`. NOTE: Some of the arrays only apply to either leaves or split\n",
      " |  nodes, resp. In this case the values of nodes of the other type are\n",
      " |  arbitrary!\n",
      " |  \n",
      " |  Attributes\n",
      " |  ----------\n",
      " |  node_count : int\n",
      " |      The number of nodes (internal nodes + leaves) in the tree.\n",
      " |  \n",
      " |  capacity : int\n",
      " |      The current capacity (i.e., size) of the arrays, which is at least as\n",
      " |      great as `node_count`.\n",
      " |  \n",
      " |  max_depth : int\n",
      " |      The depth of the tree, i.e. the maximum depth of its leaves.\n",
      " |  \n",
      " |  children_left : array of int, shape [node_count]\n",
      " |      children_left[i] holds the node id of the left child of node i.\n",
      " |      For leaves, children_left[i] == TREE_LEAF. Otherwise,\n",
      " |      children_left[i] > i. This child handles the case where\n",
      " |      X[:, feature[i]] <= threshold[i].\n",
      " |  \n",
      " |  children_right : array of int, shape [node_count]\n",
      " |      children_right[i] holds the node id of the right child of node i.\n",
      " |      For leaves, children_right[i] == TREE_LEAF. Otherwise,\n",
      " |      children_right[i] > i. This child handles the case where\n",
      " |      X[:, feature[i]] > threshold[i].\n",
      " |  \n",
      " |  feature : array of int, shape [node_count]\n",
      " |      feature[i] holds the feature to split on, for the internal node i.\n",
      " |  \n",
      " |  threshold : array of double, shape [node_count]\n",
      " |      threshold[i] holds the threshold for the internal node i.\n",
      " |  \n",
      " |  value : array of double, shape [node_count, n_outputs, max_n_classes]\n",
      " |      Contains the constant prediction value of each node.\n",
      " |  \n",
      " |  impurity : array of double, shape [node_count]\n",
      " |      impurity[i] holds the impurity (i.e., the value of the splitting\n",
      " |      criterion) at node i.\n",
      " |  \n",
      " |  n_node_samples : array of int, shape [node_count]\n",
      " |      n_node_samples[i] holds the number of training samples reaching node i.\n",
      " |  \n",
      " |  weighted_n_node_samples : array of int, shape [node_count]\n",
      " |      weighted_n_node_samples[i] holds the weighted number of training samples\n",
      " |      reaching node i.\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __getstate__(...)\n",
      " |      Getstate re-implementation, for pickling.\n",
      " |  \n",
      " |  __reduce__(...)\n",
      " |      Reduce re-implementation, for pickling.\n",
      " |  \n",
      " |  __setstate__(...)\n",
      " |      Setstate re-implementation, for unpickling.\n",
      " |  \n",
      " |  apply(...)\n",
      " |      Finds the terminal region (=leaf node) for each sample in X.\n",
      " |  \n",
      " |  compute_feature_importances(...)\n",
      " |      Computes the importance of each feature (aka variable).\n",
      " |  \n",
      " |  compute_partial_dependence(...)\n",
      " |      Partial dependence of the response on the ``target_feature`` set.\n",
      " |      \n",
      " |      For each sample in ``X`` a tree traversal is performed.\n",
      " |      Each traversal starts from the root with weight 1.0.\n",
      " |      \n",
      " |      At each non-leaf node that splits on a target feature, either\n",
      " |      the left child or the right child is visited based on the feature\n",
      " |      value of the current sample, and the weight is not modified.\n",
      " |      At each non-leaf node that splits on a complementary feature,\n",
      " |      both children are visited and the weight is multiplied by the fraction\n",
      " |      of training samples which went to each child.\n",
      " |      \n",
      " |      At each leaf, the value of the node is multiplied by the current\n",
      " |      weight (weights sum to 1 for all visited terminal nodes).\n",
      " |      \n",
      " |      Parameters\n",
      " |      ----------\n",
      " |      X : view on 2d ndarray, shape (n_samples, n_target_features)\n",
      " |          The grid points on which the partial dependence should be\n",
      " |          evaluated.\n",
      " |      target_features : view on 1d ndarray, shape (n_target_features)\n",
      " |          The set of target features for which the partial dependence\n",
      " |          should be evaluated.\n",
      " |      out : view on 1d ndarray, shape (n_samples)\n",
      " |          The value of the partial dependence function on each grid\n",
      " |          point.\n",
      " |  \n",
      " |  decision_path(...)\n",
      " |      Finds the decision path (=node) for each sample in X.\n",
      " |  \n",
      " |  predict(...)\n",
      " |      Predict target for X.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Static methods defined here:\n",
      " |  \n",
      " |  __new__(*args, **kwargs) from builtins.type\n",
      " |      Create and return a new object.  See help(type) for accurate signature.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data descriptors defined here:\n",
      " |  \n",
      " |  capacity\n",
      " |  \n",
      " |  children_left\n",
      " |  \n",
      " |  children_right\n",
      " |  \n",
      " |  feature\n",
      " |  \n",
      " |  impurity\n",
      " |  \n",
      " |  max_depth\n",
      " |  \n",
      " |  max_n_classes\n",
      " |  \n",
      " |  n_classes\n",
      " |  \n",
      " |  n_features\n",
      " |  \n",
      " |  n_leaves\n",
      " |  \n",
      " |  n_node_samples\n",
      " |  \n",
      " |  n_outputs\n",
      " |  \n",
      " |  node_count\n",
      " |  \n",
      " |  threshold\n",
      " |  \n",
      " |  value\n",
      " |  \n",
      " |  weighted_n_node_samples\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data and other attributes defined here:\n",
      " |  \n",
      " |  __pyx_vtable__ = <capsule object NULL>\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.tree._tree import Tree\n",
    "help(Tree)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.434284Z",
     "start_time": "2020-06-19T13:47:54.427200Z"
    }
   },
   "outputs": [],
   "source": [
    "def tree_to_code(tree, feature_names):\n",
    "    if isinstance(tree, DecisionTreeClassifier):\n",
    "        model = 'clf'\n",
    "    elif isinstance(tree, DecisionTreeRegressor):\n",
    "        model = 'reg'\n",
    "    else:\n",
    "        raise ValueError('Need Regression or Classification Tree')\n",
    "        \n",
    "    tree_ = tree.tree_\n",
    "    feature_name = [\n",
    "        feature_names[i] if i != _tree.TREE_UNDEFINED else \"undefined!\"\n",
    "        for i in tree_.feature\n",
    "    ]\n",
    "    print(\"def tree({}):\".format(\", \".join(feature_names)))\n",
    "\n",
    "    def recurse(node, depth):\n",
    "        indent = \"  \" * depth\n",
    "        if tree_.feature[node] != _tree.TREE_UNDEFINED:\n",
    "            name = feature_name[node]\n",
    "            threshold = tree_.threshold[node]\n",
    "            print(indent, f'if {name} <= {threshold:.2%}')\n",
    "            recurse(tree_.children_left[node], depth + 1)\n",
    "            print(indent, f'else:  # if {name} > {threshold:.2%}')\n",
    "            recurse(tree_.children_right[node], depth + 1)\n",
    "        else:\n",
    "            pred = tree_.value[node][0]\n",
    "            val = pred[1]/sum(pred) if model == 'clf' else pred[0]\n",
    "            print(indent, f'return {val:.2%}')\n",
    "    recurse(0, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.455022Z",
     "start_time": "2020-06-19T13:47:54.435375Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "def tree(t-1, t-2):\n",
      "   if t-1 <= -7.44%\n",
      "     if t-1 <= -25.72%\n",
      "       return 40.94%\n",
      "     else:  # if t-1 > -25.72%\n",
      "       if t-2 <= -6.72%\n",
      "         if t-1 <= -8.81%\n",
      "           if t-1 <= -8.88%\n",
      "             return 55.26%\n",
      "           else:  # if t-1 > -8.88%\n",
      "             return 23.08%\n",
      "         else:  # if t-1 > -8.81%\n",
      "           return 64.47%\n",
      "       else:  # if t-2 > -6.72%\n",
      "         if t-1 <= -13.61%\n",
      "           if t-2 <= 4.83%\n",
      "             return 44.72%\n",
      "           else:  # if t-2 > 4.83%\n",
      "             return 50.09%\n",
      "         else:  # if t-1 > -13.61%\n",
      "           if t-2 <= 8.26%\n",
      "             return 51.19%\n",
      "           else:  # if t-2 > 8.26%\n",
      "             return 56.97%\n",
      "   else:  # if t-1 > -7.44%\n",
      "     if t-1 <= 6.76%\n",
      "       if t-2 <= -6.66%\n",
      "         if t-1 <= 6.15%\n",
      "           if t-1 <= -7.16%\n",
      "             return 72.22%\n",
      "           else:  # if t-1 > -7.16%\n",
      "             return 54.31%\n",
      "         else:  # if t-1 > 6.15%\n",
      "           return 66.46%\n",
      "       else:  # if t-2 > -6.66%\n",
      "         if t-2 <= -6.11%\n",
      "           return 68.22%\n",
      "         else:  # if t-2 > -6.11%\n",
      "           if t-2 <= 17.86%\n",
      "             return 57.84%\n",
      "           else:  # if t-2 > 17.86%\n",
      "             return 53.04%\n",
      "     else:  # if t-1 > 6.76%\n",
      "       if t-2 <= 10.66%\n",
      "         if t-2 <= -10.81%\n",
      "           if t-1 <= 28.33%\n",
      "             return 50.88%\n",
      "           else:  # if t-1 > 28.33%\n",
      "             return 62.29%\n",
      "         else:  # if t-2 > -10.81%\n",
      "           if t-2 <= 3.57%\n",
      "             return 57.25%\n",
      "           else:  # if t-2 > 3.57%\n",
      "             return 53.67%\n",
      "       else:  # if t-2 > 10.66%\n",
      "         if t-1 <= 18.83%\n",
      "           return 51.39%\n",
      "         else:  # if t-1 > 18.83%\n",
      "           return 43.17%\n"
     ]
    }
   ],
   "source": [
    "tree_to_code(clf_tree_t2, X2.columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overfitting, Regularization & Parameter Tuning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Decision trees have a strong tendency to overfit, especially when a dataset has a large number of features relative to the number of samples. As discussed in previous chapters, overfitting increases the prediction error because the model does not only learn the signal contained in the training data, but also the noise.\n",
    "There are several ways to address the risk of overfitting."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Decision trees provide several regularization hyperparameters to limit the growth of a tree and the associated complexity. While every split increases the number of nodes, it also reduces the number of samples available per node to support a prediction. For each additional level, twice the number of samples is needed to populate the new nodes with the same sample density. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Decision Tree Parameters"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following table lists key parameters available for this purpose in the sklearn decision tree implementation. After introducing the most important parameters, we will illustrate how to use cross-validation to optimize the hyperparameter settings with respect to the bias-variance tradeoff and lower prediction errors:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| Parameter                | Default | Options                                                                                                                                                               | Description                                                                                                                                                                                                             |\n",
    "|--------------------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
    "| criterion                | gini    | Regression: MSE, MAE Classification: Gini impurity, Cross Entropy                                                                                                     | Metric to evaluate split quality.                                                                                                                                                                                       |\n",
    "| splitter                 | best    | best, random                                                                                                                                                          | How to choose the split at each node. Supported strategies are “best” to choose the best split and “random” to choose the best random split.                                                                            |\n",
    "| max_depth                | None    | int                                                                                                                                                                   | Max # of levels in tree. Split nodes until max_depth is reached or all leaves are pure or all leaves contain less than min_samples_split samples.                                                                       |\n",
    "| max_features             | None    | None: max_features=n_features; int; float (fraction): int(max_features * n_features)  auto, sqrt: max_features=sqrt(n_features). log2: max_features=log2(n_features). | # of features to consider when evaluating split                                                                                                                                                                         |\n",
    "| max_leaf_nodes           | None    | None: unlimited # of leaf nodes int                                                                                                                                   | Continue to split nodes that reduce relative impurity the most until reaching max_leaf_nodes.                                                                                                                           |\n",
    "| min_impurity_decrease    | 0       | float                                                                                                                                                                 | Split node if impurity decreases by at least this value.                                                                                                                                                                |\n",
    "| min_samples_leaf         | 1       | int; float (as percentage of N)                                                                                                                                       | Minimum # of samples to be at a leaf node. A split will only be considered if there are at least min_samples_leaf training samples in each of the left and right branches. May smoothen the model, esp. for regression. |\n",
    "| min_samples_split        | 2       | int; float (as percentage of N)                                                                                                                                       | The minimum number of samples required to split an internal node:                                                                                                                                                       |\n",
    "| min_weight_fraction_leaf | 0       | NA                                                                                                                                                                    | The minimum weighted fraction of the sum total of weights (of all the input samples) required to be at a leaf node. Samples have equal weight when sample_weight is not provided (in fit method).                       |\n",
    "| presort                  | False   | NA                                                                                                                                                                    | Sort the data to speed up the search for best splits during training. Can slow down training on 'large' datasets but may speed up training on small data or with small max_depth setting.                               |\n",
    "| class_weight             | None    | balanced: inversely proportional to class frequencies dict: {class_label: weight} list of dicts (for multi-output)                                                    | Weights associated with classes                                                                                                                                                                                         |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `max_depth` parameter imposes a hard limit on the number of consecutive splits and represents the most straightforward way to cap the growth of a tree.\n",
    "\n",
    "The m`in_samples_split` and `min_samples_leaf` parameters are alternative, data-driven ways to limit the growth of a tree. Rather than imposing a hard limit on the number of consecutive splits, these parameters control the minimum number of samples required to further split the data. The latter guarantees a certain number of samples per leaf, while the former can create very small leaves if a split results in a very uneven distribution. Small parameter values facilitate overfitting, while a high number may prevent the tree from learning the signal in the data. \n",
    "\n",
    "The default values are often quite low, and you should use cross-validation to explore a range of potential values. You can also use a float to indicate a percentage as opposed to an absolute number. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cross-validation parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.458378Z",
     "start_time": "2020-06-19T13:47:54.455997Z"
    }
   },
   "outputs": [],
   "source": [
    "n_splits = 10\n",
    "train_period_length = 60\n",
    "test_period_length = 6\n",
    "lookahead = 1\n",
    "\n",
    "cv = MultipleTimeSeriesCV(n_splits=n_splits,\n",
    "                          train_period_length=train_period_length,\n",
    "                          test_period_length=test_period_length,\n",
    "                          lookahead=lookahead)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.468071Z",
     "start_time": "2020-06-19T13:47:54.459662Z"
    }
   },
   "outputs": [],
   "source": [
    "max_depths = range(1, 16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Finding the best trees using GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "scikit-learn provides a method to define ranges of values for multiple hyperparameters. It automates the process of cross-validating the various combinations of these parameter values to identify the optimal configuration. Let's walk through the process of automatically tuning your model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Define parameter grid"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The first step is to define a dictionary where the keywords name the hyperparameters, and the values list the parameter settings to be tested:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.481095Z",
     "start_time": "2020-06-19T13:47:54.469701Z"
    }
   },
   "outputs": [],
   "source": [
    "param_grid = {'max_depth': [2, 3, 4, 5, 6, 7, 8, 10, 12, 15],\n",
    "              'min_samples_leaf': [5, 25, 50, 100],\n",
    "              'max_features': ['sqrt', 'auto']}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Classification Tree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then, we instantiate a model object:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.489079Z",
     "start_time": "2020-06-19T13:47:54.482376Z"
    }
   },
   "outputs": [],
   "source": [
    "clf = DecisionTreeClassifier(random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we instantiate the GridSearchCV object, providing the estimator object and parameter grid, as well as a scoring method and cross-validation choice to the initialization method. We'll use an object of our custom OneStepTimeSeriesSplit class, initialized to use ten folds for the cv parameter, and set the scoring to the roc_auc metric. We can parallelize the search using the n_jobs parameter and automatically obtain a trained model that uses the optimal hyperparameters by setting `refit=True`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:47:54.497143Z",
     "start_time": "2020-06-19T13:47:54.490236Z"
    }
   },
   "outputs": [],
   "source": [
    "gridsearch_clf = GridSearchCV(estimator=clf,\n",
    "                          param_grid=param_grid,\n",
    "                          scoring='roc_auc',\n",
    "                          n_jobs=-1,\n",
    "                          cv=cv,\n",
    "                          refit=True,\n",
    "                          return_train_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With all settings in place, we can fit GridSearchCV just like any other model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:09.355265Z",
     "start_time": "2020-06-19T13:47:54.498338Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=<utils.MultipleTimeSeriesCV object at 0x7f29a82a6cd0>,\n",
       "             estimator=DecisionTreeClassifier(random_state=42), n_jobs=-1,\n",
       "             param_grid={'max_depth': [2, 3, 4, 5, 6, 7, 8, 10, 12, 15],\n",
       "                         'max_features': ['sqrt', 'auto'],\n",
       "                         'min_samples_leaf': [5, 25, 50, 100]},\n",
       "             return_train_score=True, scoring='roc_auc')"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gridsearch_clf.fit(X=X, y=y_binary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The training process produces some new attributes for our GridSearchCV object, most importantly the information about the optimal settings and the best cross-validation score (now using the proper setup that avoids lookahead bias).\n",
    "\n",
    "Setting `max_depth` to 10, `min_samples_leaf` to 750, and randomly selecting only a number corresponding to the square root of the total number of features when deciding on a split, produces the best results, with an AUC of 0.532:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:09.364278Z",
     "start_time": "2020-06-19T13:48:09.360495Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': 12, 'max_features': 'sqrt', 'min_samples_leaf': 5}"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gridsearch_clf.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:09.386219Z",
     "start_time": "2020-06-19T13:48:09.365809Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5268077435930824"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gridsearch_clf.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Define Custom IC score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:09.398755Z",
     "start_time": "2020-06-19T13:48:09.387476Z"
    }
   },
   "outputs": [],
   "source": [
    "def rank_correl(y, y_pred):\n",
    "    return spearmanr(y, y_pred)[0]\n",
    "ic = make_scorer(rank_correl)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Regression Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:09.406313Z",
     "start_time": "2020-06-19T13:48:09.400130Z"
    }
   },
   "outputs": [],
   "source": [
    "reg_tree = DecisionTreeRegressor(random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:09.419006Z",
     "start_time": "2020-06-19T13:48:09.407663Z"
    }
   },
   "outputs": [],
   "source": [
    "gridsearch_reg = GridSearchCV(estimator=reg_tree,\n",
    "                              param_grid=param_grid,\n",
    "                              scoring=ic,\n",
    "                              n_jobs=-1,\n",
    "                              cv=cv,\n",
    "                              refit=True,\n",
    "                              return_train_score=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:41.407893Z",
     "start_time": "2020-06-19T13:48:09.419897Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=<utils.MultipleTimeSeriesCV object at 0x7f29a82a6cd0>,\n",
       "             estimator=DecisionTreeRegressor(random_state=42), n_jobs=-1,\n",
       "             param_grid={'max_depth': [2, 3, 4, 5, 6, 7, 8, 10, 12, 15],\n",
       "                         'max_features': ['sqrt', 'auto'],\n",
       "                         'min_samples_leaf': [5, 25, 50, 100]},\n",
       "             return_train_score=True, scoring=make_scorer(rank_correl))"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gridsearch_reg.fit(X=X, y=y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:41.411159Z",
     "start_time": "2020-06-19T13:48:41.408822Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': 6, 'max_features': 'sqrt', 'min_samples_leaf': 50}"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gridsearch_reg.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:41.426325Z",
     "start_time": "2020-06-19T13:48:41.411950Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.08415538441512119"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gridsearch_reg.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:41.438658Z",
     "start_time": "2020-06-19T13:48:41.427178Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Regression</th>\n",
       "      <th>Classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>max_depth</th>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max_features</th>\n",
       "      <td>sqrt</td>\n",
       "      <td>sqrt</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min_samples_leaf</th>\n",
       "      <td>50</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Regression Classification\n",
       "max_depth                 6             12\n",
       "max_features           sqrt           sqrt\n",
       "min_samples_leaf         50              5"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({'Regression': pd.Series(gridsearch_reg.best_params_),\n",
    "              'Classification': pd.Series(gridsearch_clf.best_params_)})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Classifier Cross-Validation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Cross-validation is the most important tool to obtain an unbiased estimate of the generalization error, which in turn permits an informed choice among the various configuration options. sklearn offers several tools to facilitate the process of cross-validating numerous parameter settings, namely the GridSearchCV convenience class that we will illustrate in the next section. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following code illustrates how to run cross-validation more manually to obtain custom tree attributes, such as the total number of nodes or leaf nodes associated with certain hyperparameter settings. \n",
    "\n",
    "The following function accesses the internal `.tree_` attribute to retrieve information about the total node count, and how many of these nodes are leaf nodes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:41.445100Z",
     "start_time": "2020-06-19T13:48:41.439520Z"
    }
   },
   "outputs": [],
   "source": [
    "def get_leaves_count(tree):\n",
    "    t = tree.tree_\n",
    "    n = t.node_count\n",
    "    leaves = len([i for i in range(t.node_count) if t.children_left[i]== -1])\n",
    "    return leaves"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can combine this information with the train and test scores to gain detailed knowledge about the model behavior throughout the cross-validation process, as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:52.492224Z",
     "start_time": "2020-06-19T13:48:41.446130Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 "
     ]
    }
   ],
   "source": [
    "train_scores, val_scores, leaves = {}, {}, {}\n",
    "for max_depth in max_depths:\n",
    "    print(max_depth, end=' ', flush=True)\n",
    "    clf = DecisionTreeClassifier(criterion='gini', \n",
    "                                 max_depth=max_depth,\n",
    "                                 min_samples_leaf=5,\n",
    "                                 max_features='sqrt',\n",
    "                                 random_state=42)\n",
    "    train_scores[max_depth], val_scores[max_depth], leaves[max_depth] = [], [], []\n",
    "    for train_idx, test_idx in cv.split(X):\n",
    "        X_train, y_train,  = X.iloc[train_idx], y_binary.iloc[train_idx]\n",
    "        X_test, y_test = X.iloc[test_idx], y_binary.iloc[test_idx]\n",
    "        clf.fit(X=X_train, y=y_train)\n",
    "\n",
    "        train_pred = clf.predict_proba(X=X_train)[:, 1]\n",
    "        train_score = roc_auc_score(y_score=train_pred, y_true=y_train)\n",
    "        train_scores[max_depth].append(train_score)\n",
    "\n",
    "        test_pred = clf.predict_proba(X=X_test)[:, 1]\n",
    "        val_score = roc_auc_score(y_score=test_pred, y_true=y_test)\n",
    "        val_scores[max_depth].append(val_score)    \n",
    "        leaves[max_depth].append(get_leaves_count(clf))\n",
    "        \n",
    "clf_train_scores = pd.DataFrame(train_scores)\n",
    "clf_valid_scores = pd.DataFrame(val_scores)\n",
    "clf_leaves = pd.DataFrame(leaves)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:48:52.499652Z",
     "start_time": "2020-06-19T13:48:52.493113Z"
    }
   },
   "outputs": [],
   "source": [
    "clf_cv_data = pd.concat([pd.melt(clf_train_scores,\n",
    "                                 var_name='Max. Depth',\n",
    "                                 value_name='ROC AUC').assign(Data='Train'),\n",
    "                         pd.melt(clf_valid_scores,\n",
    "                                 var_name='Max. Depth',\n",
    "                                 value_name='ROC AUC').assign(Data='Valid')])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regression tree cross-validation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Run cross-validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:02.463065Z",
     "start_time": "2020-06-19T13:48:52.500615Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 "
     ]
    }
   ],
   "source": [
    "train_scores, val_scores, leaves = {}, {}, {}\n",
    "for max_depth in max_depths:\n",
    "    print(max_depth, end=' ', flush=True)\n",
    "    reg_tree = DecisionTreeRegressor(max_depth=max_depth,\n",
    "                                     min_samples_leaf=50,\n",
    "                                     max_features= 'sqrt',\n",
    "                                     random_state=42)\n",
    "    train_scores[max_depth], val_scores[max_depth], leaves[max_depth] = [], [], []\n",
    "    for train_idx, test_idx in cv.split(X):\n",
    "        X_train, y_train,  = X.iloc[train_idx], y.iloc[train_idx]\n",
    "        X_test, y_test = X.iloc[test_idx], y.iloc[test_idx]\n",
    "        reg_tree.fit(X=X_train, y=y_train)\n",
    "\n",
    "        train_pred = reg_tree.predict(X=X_train)\n",
    "        train_score = spearmanr(train_pred, y_train)[0]\n",
    "        train_scores[max_depth].append(train_score)\n",
    "\n",
    "        test_pred = reg_tree.predict(X=X_test)\n",
    "        val_score = spearmanr(test_pred, y_test)[0]\n",
    "        val_scores[max_depth].append(val_score)\n",
    "        leaves[max_depth].append(get_leaves_count(reg_tree))\n",
    "\n",
    "reg_train_scores = pd.DataFrame(train_scores)\n",
    "reg_valid_scores = pd.DataFrame(val_scores)\n",
    "reg_leaves = pd.DataFrame(leaves)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:02.474505Z",
     "start_time": "2020-06-19T13:49:02.463985Z"
    }
   },
   "outputs": [],
   "source": [
    "reg_cv_data = (pd.melt(reg_train_scores, var_name='Max. Depth',\n",
    "                         value_name='IC').assign(Data='Train').append(\n",
    "    pd.melt(reg_valid_scores,\n",
    "            var_name='Max. Depth',\n",
    "            value_name='IC').assign(Data='Valid')))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compare CV Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:03.716611Z",
     "start_time": "2020-06-19T13:49:02.475976Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+gAAAFkCAYAAACzThFuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xUVfr48c/UTCYz6YVIAKkRKUZQAVdEsCFtFRYRWNaywvq166JiYUG+ooioq6KssC6/dW2IxoJfwIp1wVUElkgPPaSSNiVTbvn9MclITEJNmJTn/XrlZXLvnTvPBOSc555znmPQdV1HCCGEEEIIIYQQEWWMdABCCCGEEEIIIYSQBF0IIYQQQgghhGgWJEEXQgghhBBCCCGaAUnQhRBCCCGEEEKIZkASdCGEEEIIIYQQohmQBF0IIYQQQgghhGgGJEEXQgjRIsyYMYPMzMwGv7Kzs0/qntOnTz+peO677z7Gjx9f77mdO3eSmZnJ9u3bj3qPYcOGsXz5cgCmTJnCs88+W+91iqKQmZnJ999/f1yxbd26lR9//BGA77//nszMTBRFOa7Xnqi1a9cyefJksrKy6NevH1OmTGHt2rVN8l5CCCFEa2eOdABCCCHE8Xj44Yf585//DMCPP/7I3Xffzbfffhs+73Q6T+qeJ2v06NFMnTqV/Px80tPTa51buXIlPXr0IDMz87jv98ILL2CxWE46niPddttt/M///A/nnXce5557Lt9++y1mc+M3+Vu3buWWW25h+vTpzJ07F0VR+OCDD5g6dSpvvvkmffr0afT3FEIIIVozSdCFEEK0CE6nM5yEx8XFAZCSknLK9zxZF154IUlJSXz88cfccMMNtc6tWrWKsWPHntD94uPjTzqWo7Faraf8e2rIBx98wMCBA5kyZUr42J///Gd++uknli9fLgm6EEIIcYJkirsQQohWIzMzk7/+9a8MHDgwnDS/++67XHXVVfTu3ZsBAwYwa9as8HTvI6e4v/DCC9xzzz3MmTOH/v37M3ToUF5++eUG38tsNnPVVVfxySef1Dq+bds29u7dy6hRowgGgzz55JNcfPHF9OrVi6FDh/LGG2/Ue79fT3FfuHAhgwYNYuDAgbz33nu1ri0qKuLOO+/k/PPPp3fv3lx99dX88MMP4fvk5eXxyCOPMGPGjDpT3AsKCrjrrru44IILGDBgAHPmzMHv9wOQnZ3NxIkTWbhwIQMHDuSiiy5i7ty5aJpWb8wGg4EdO3ZQXFxc6/gzzzzDnXfeGf753//+N2PHjuWcc85h5MiRfPHFF+FzGzZsYOLEiWRlZTFs2DBef/318LkZM2bwwAMPcPXVVzNgwAC2b9+Oy+XigQceoH///vzmN79h5syZuN3u8Guee+45Bg8eTJ8+fZgwYQIbNmyoN3YhhBCiOZIEXQghRKvy+eef88Ybb/Dwww/z448/8uijj3LPPffw8ccf8+ijj5KdnV0nqa7x6aefYjKZWL58ORMmTOCZZ55h165dDb7XqFGj2LBhA0VFReFjK1eu5Pzzz+eMM85gyZIlfPHFFzz//POsXr2aa665hscee4zCwsKjfoZly5bx6quv8vjjj7N06VLefffdWufvv/9+FEXhrbfe4v3336ddu3bMmjULCD1oaNeuHTNmzKgzhT8QCHD99dfj9Xp59dVXee655/j666+ZN29e+JrNmzeTm5vL66+/zt13381rr73GN998U2+cv/vd7ygvL2fYsGFMmzaNpUuXkpubS1paGsnJyQDk5uYybdo0hg0bxgcffMC1117LXXfdxYEDB8jNzeX666/n/PPP57333uOOO+7gqaeeYtWqVeH3+PDDD7nttttYsmQJ3bt356GHHqKsrIzXX3+dl19+mT179vDggw+G//xef/11FixYwMqVKzn77LO58847G3zAIIQQQjQ3MsVdCCFEqzJhwgS6dOkCQE5ODnPnzuWKK64AoH379ixdurTBpNvpdDJjxgxMJhO33HILS5cuJScnh27dutV7/bnnnkv79u359NNPmTx5MgCrV6/m5ptvBqBHjx7MnTuXrKwsAG655RZefPFF9uzZQ1paWoOf4e2332bKlCkMHToUgDlz5jB69Ojw+aFDh3LFFVeE175PnjyZm2++GV3XiY+Px2Qy4XA46kzh/+abbygoKGDZsmXhKfV/+ctfuOWWW7j33nuBUEG6OXPm4HQ66dq1K6+//jqbN29myJAhdeLs2rUr7777LosXL2bNmjV89dVXzJs3j4suuoinnnqKxMRE3nnnHfr06cPtt98OwJlnnonH48Hj8fDee++RmZkZfu/OnTuTm5vL3//+d6666ioAevbsyeWXXw7A/v37+fTTT1m3bl04/ieffJJhw4aR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\n",
      "text/plain": [
       "<Figure size 1008x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(ncols=2, figsize=(14, 5))\n",
    "\n",
    "sns.lineplot(data=reg_cv_data,\n",
    "             x='Max. Depth', y='IC',\n",
    "             hue='Data', ci=95,\n",
    "             ax=axes[0], lw=2)\n",
    "\n",
    "axes[0].set_title('Regression Tree')\n",
    "axes[0].axvline(x=reg_valid_scores.mean().idxmax(), ls='--', c='k', lw=1)\n",
    "axes[0].axhline(y=0, ls='--', c='k', lw=1)\n",
    "\n",
    "sns.lineplot(data=clf_cv_data,\n",
    "             x='Max. Depth', y='ROC AUC',\n",
    "             hue='Data', ci=95,\n",
    "             ax=axes[1], lw=2)\n",
    "\n",
    "axes[1].set_title('Classification Tree')\n",
    "axes[1].axvline(x=clf_valid_scores.mean().idxmax(), ls='--', c='k', lw=1)\n",
    "axes[1].axhline(y=.5, ls='--', c='k', lw=1)\n",
    "for ax in axes:\n",
    "    ax.set_xlim(min(param_grid['max_depth']),\n",
    "                max(param_grid['max_depth']))\n",
    "\n",
    "fig.suptitle(f'Train-Validation Scores', fontsize=14)\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.subplots_adjust(top=.91)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Learning Curves for best models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A learning curve is a useful tool that displays how the validation and training score evolve as the number of training samples evolves.\n",
    "\n",
    "The purpose of the learning curve is to find out whether and how much the model would benefit from using more data during training. It is also useful to diagnose whether the model's generalization error is more likely driven by bias or variance.\n",
    "\n",
    "If, for example, both the validation score and the training score converge to a similarly low value despite an increasing training set size, the error is more likely due to bias, and additional training data is unlikely to help."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:03.719985Z",
     "start_time": "2020-06-19T13:49:03.717763Z"
    }
   },
   "outputs": [],
   "source": [
    "sizes = np.arange(.1, 1.01, .1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:05.481870Z",
     "start_time": "2020-06-19T13:49:03.720912Z"
    }
   },
   "outputs": [],
   "source": [
    "train_sizes, train_scores, valid_scores = learning_curve(gridsearch_clf.best_estimator_,\n",
    "                                                         X,\n",
    "                                                         y_binary,\n",
    "                                                         train_sizes=sizes,\n",
    "                                                         cv=cv,\n",
    "                                                         scoring='roc_auc',\n",
    "                                                         n_jobs=-1,\n",
    "                                                         shuffle=True,\n",
    "                                                         random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:05.492547Z",
     "start_time": "2020-06-19T13:49:05.482789Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 200 entries, 0 to 99\n",
      "Data columns (total 3 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   Train Size  200 non-null    int64  \n",
      " 1   ROC AUC     200 non-null    float64\n",
      " 2   Data        200 non-null    object \n",
      "dtypes: float64(1), int64(1), object(1)\n",
      "memory usage: 6.2+ KB\n"
     ]
    }
   ],
   "source": [
    "clf_lc_data = pd.concat([\n",
    "    pd.melt(pd.DataFrame(train_scores.T, columns=train_sizes),\n",
    "            var_name='Train Size',\n",
    "            value_name='ROC AUC').assign(Data='Train'),\n",
    "    pd.melt(pd.DataFrame(valid_scores.T, columns=train_sizes),\n",
    "            var_name='Train Size',\n",
    "            value_name='ROC AUC').assign(Data='Valid')])\n",
    "clf_lc_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Regression Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:06.725933Z",
     "start_time": "2020-06-19T13:49:05.493737Z"
    }
   },
   "outputs": [],
   "source": [
    "train_sizes, train_scores, valid_scores = learning_curve(gridsearch_reg.best_estimator_,\n",
    "                                                         X, y,\n",
    "                                                         train_sizes=sizes,\n",
    "                                                         cv=cv,\n",
    "                                                         scoring=ic,\n",
    "                                                         n_jobs=-1,\n",
    "                                                         shuffle=True,\n",
    "                                                         random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:06.737139Z",
     "start_time": "2020-06-19T13:49:06.727092Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 200 entries, 0 to 99\n",
      "Data columns (total 3 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   Train Size  200 non-null    int64  \n",
      " 1   IC          200 non-null    float64\n",
      " 2   Data        200 non-null    object \n",
      "dtypes: float64(1), int64(1), object(1)\n",
      "memory usage: 6.2+ KB\n"
     ]
    }
   ],
   "source": [
    "reg_lc_data = pd.concat([\n",
    "    pd.melt(pd.DataFrame(train_scores.T,\n",
    "                         columns=train_sizes),\n",
    "            var_name='Train Size',\n",
    "            value_name='IC').assign(Data='Train'),\n",
    "    pd.melt(pd.DataFrame(valid_scores.T,\n",
    "                         columns=train_sizes),\n",
    "            var_name='Train Size',\n",
    "            value_name='IC').assign(Data='Valid')])\n",
    "reg_lc_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Compare Learning Curves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:07.687409Z",
     "start_time": "2020-06-19T13:49:06.738241Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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KiqQnp6OtWvX4pJLLsHdd99tH1dlZaU9LYAQQkjP1JHn52HDhmH9+vX29Km4p59+Gv369cPw4cPt6x5//HFs2LABkydPxogRI6Bpmn3OO9xzbGsEQUgqFhuNRrF3716UlJRg7ty5uPHGG3Huueeif//+eO+99w64L8MwkvZlGIZ9DgdgB/H4bQ71PL7/55DEofGKotiN9oZh4KmnnrKnozU2NnbLgriEHMjBu+MIIe1i165d2Lt3L0444QSMGjUKX3/9NXbs2AEA+PzzzzFp0iREo1H86U9/wsqVKzFx4kQ89NBD8Hq92LNnDwRBgKqqbXosWZbx0EMP4Y033sCmTZtQUFCQ1FNQVlaGiy66CBs3bsTYsWPx8ccfIxAIAIDd4tyS0aNH4/XXX4eiKDAMAw888AD++7//G7W1tRg7dixSU1Nxww034K677kJRUVGr1ycaM2YMVq5cidraWgDA22+/jdTUVOTn5x/ya3www4YNw+7du+2qsJs3b8b555+PiooKjB49Gv/3f/+HyspKAMDSpUsxderUdj8GQggh3UtHnp9vvvlmvPXWW/jqq6/s67744gu8+uqrGDx4cNJtv/rqK0ydOhWXXnopMjIysHr1aui6fkTn2NaMGDEC33zzjX3OW7ZsGR5//HF8/fXXOOecc3DttdfixBNPxCeffAJd1wGYgT4xdMeNHj0ar732GhhjUBQFb775Js4444w2HcehGj16NFasWIFgMAgAeOqpp3DPPffY21566SX7OH7729/itdde65DjIKSjUM85IR0kGo3ikksusX82DAOzZ89GQUEBAGD27NmYPn06GGMQRRFLliyBx+PB7373O9x///1Yvnw5BEHAeeedh1/+8pdoaGiAw+HA5ZdfjrfeeuugrcGnnXYaLr74YsyePRtLly7F3/72N8ydOxf/+Mc/oGka/vCHP9hD1q+88kpcddVVcDqdOP7441utHvu73/0O8+bNw69//Wvouo4TTjjBLtr229/+FjfccAOcTicEQcCcOXOQnp7e4vWJzjzzTNxwww2YOnUqDMNAeno6nn322TYN5T9U6enpWLRoEebPn49YLAbGGObPn4+8vDzk5eXh1ltvxU033QSO4+D1evH0009TqzshhPQwnXl+zs/Px9///ncsXLgQ8+bNs89zS5YsQWFhoT2FCwBuv/12zJ8/H0899RQk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IlJiCs5FRERERERESkzBuYiIiIiIiEiJKTgXERERERERKTEF5yIiIiIiIiIlpuBcREREREREpMQUnIuIiIiIiIiUmIJzERERERERkRJTcC4iIiIiIiJSYoFiPZHrutx+++2sX7+eUCjEwoULaWpq6nWfWCzGRz7yEe644w5mzJgBwHvf+17q6+sBmDx5MnfeeWexliwiIiIiIiJSFEULzh9//HESiQRLliyhubmZxYsXc9999+Vuf/nll/nqV7/Kvn37ctfF43EA7r///mItU0RERERERKToipbWvnr1aubNmwfAnDlzWLt2ba/bE4kE9957L9OnT89dt27dOmKxGB/96Ee54YYbaG5uLtZyRURERERERIqmaDvnkUiEcDicu+z3+0mlUgQCtoTzzjvvkMdUV1dz4403cu2117J161Y+9rGP8cgjj+QeIyIiIiIiIjIUFC3KDYfDdHd35y67rnvUIHvatGk0NTXhOA7Tpk2jsbGRAwcOMHHixMFeroiIiIiIiEjRFC2tfe7cuaxYsQKA5uZmZs2addTHLF26lMWLFwOwb98+IpEIY8eOHdR1ioiIiIiIiBRb0XbO58+fz8qVK7nuuuvwPI9FixaxbNkyotEoCxYsOOxj3v/+9/PFL36R66+/HsdxWLRokVLaRUREREREZMhxPM/zSr2IgXb11VfzwAMPlHoZIiIichR6zxYRETFFS2sXERERERERkcNTcC4iIiIiIiJSYgrORUREylkqDnteLvUqREREZJApOBcRESlXyRjsXAUdO0q9EhERERlkan0uIiJSjuIR2PUiOIA/WOrViIiIyCDTzrmIiEi56emEnS+AzwdV9aVejYiIiBSBds5FRETKSawNdq2GYA0Ea0u9GhERESkSBeciIiLlovsg7FoD1WEIVJd6NSIiIlJECs5FRETKQdc+2NMM1Q0QqCr1akRERKTIFJyLiIiUWvtO2PcK1I5U8zcREZFhSsG5iIhIKbVuhQProW4U+PS2LCIiMlzpKEBERKQUPA9aNtm/utHg85d6RSIiIlJCCs5FRESKzXXh4Hpo3w7hMeBosqmIiMhwp+BcRESkmNw07H8NOndD3VhwnFKvSERERMqAgnMREZFiSadg31roPgDhsaVejYiIiJQRBeciIiLFkErA3pegpx3qxpR6NSfEdV1uv/121q9fTygUYuHChTQ1NQFw4MABbrrpptx9X3vtNT73uc9x/fXXl2q5IiIiFUXBuYiIyGBLxWH3GkhEoXZ0qVdzwh5//HESiQRLliyhubmZxYsXc9999wEwduxY7r//fgDWrFnDPffcwwc+8IFSLldERKSiqAONiIjIYErGYOcqSPXYHPMysWTJElKpFACrVq3iV7/61VEfs3r1aubNmwfAnDlzWLt27SH38TyPr3/969x+++34/epALyIicqwUnIuIiAyWeAR2vABeGqobSr2anO9///usXLmSZDIJwIQJE1i5ciX33ntvv4+LRCKEw+HcZb/fnwvws5588klmzpzJ9OnTB37hIiIiQ5iCcxERkcHQ0wk7XwCfD6rqS72aXlasWMF3v/tdampqAJg8eTL33HMPTz75ZL+PC4fDdHd35y67rksg0LtC7sEHH1Q6u4iIyAlQcC4iIjLQYm2w83kIhCBUV+rVHKK2thanzwi3YDBIXV3/a507dy4rVqwAoLm5mVmzZh1yn1deeYW5c+cO3GJFRESGCTWEExERGUjdB2HXGqiuh0BVqVdzWNXV1ezYsYMpU6bkrtuxY8chAXtf8+fPZ+XKlVx33XV4nseiRYtYtmwZ0WiUBQsW0NraSl1d3VE/j4iIiBxKwbmIiMhA6doHe5qhphH8oVKv5ohuvvlmPvnJT3LxxRczZcoUdu/ezV/+8he+8Y1v9Ps4n8/H1772tV7XzZgxI/fxqFGj+P3vfz8oaxYRERnqlNYuIiIyENp3wu5mqBlZ1oE5wMyZM/nlL3/JGWecQSwW48wzz+RXv/oVZ5xxRqmXJiIiMmxp51xERORktW6FA+uhbhT4yv+t9YUXXgDglFNOYfLkyVRVVWnsmYiISImV/xGEiIhIufI8aNkErZuhbjT4KiPA7TvTPBqN8vrrr3Pbbbfxtre9rTSLEhERGeYUnIuIiJwI14WD66F9O9SNAadyKsW+/e1vH3Jde3s7n/jEJxSci4iIlIiCcxERkePlpmH/q9C5B+rGwhDoTt7Y2HjIzHIREREpHr0Li4iIHI90CvathcgBCI8t9WoGTDQaJRKJlHoZIiIiw1bRgnPXdbn99ttZv349oVCIhQsX0tTU1Os+sViMj3zkI9xxxx3MmDHjmB4jIiJSNKkE7PkrxDshPKbUqzlhd999d69Z5IlEgpUrV/LBD36whKsSEREZ3ooWnD/++OMkEgmWLFlCc3Mzixcv5r777svd/vLLL/PVr36Vffv2HfNjREREiibZYzPME1GoHVXq1ZyU6dOn97pcVVXFggULmDZtWolWJCIiIkULzlevXs28efMAmDNnDmvXru11eyKR4N577+WWW2455seIiIgURSIKu9eAm4TakaVezUl73/ved8h1y5cvZ+HChfz4xz8uwYpERESkaMF5JBIhHA7nLvv9flKpVK75zHnnnXfcjxERERl08QjsWm1N36obSr2aAdXe3s5vfvMb/vu//5upU6fy/ve/v9RLEhERGbaKFuWGw2G6u7tzl13XPWqQfSKPERERGTA9HbDrRfAHIVRX6tUMmLVr1/KLX/yCF198kSuuuIIJEyZox1xERKTEijaUde7cuaxYsQKA5uZmZs2aNSiPERERGRCxNtj5AgSqhlRgDnDdddcxbtw4li1bxmc/+1mqq6tLvSQREZFh76jb0O3t7TQ2NgLQ0tKC4ziMGnX8jXDmz5/PypUrue666/A8j0WLFrFs2TKi0SgLFiw45seIiIgMuu6DsGsNVNdbcD7E/OIXv2Dp0qW8+93vZv78+USj0VIvSUREZNiT6RCOAAAgAElEQVRzPM/zjnTj888/zxe+8AV+97vf0dDQwMqVK7n11lu56667OP/884u5zuNy9dVX88ADD5R6GSIiUok698Del6CmEfyhUq/GdB+EmfMH/NNGo1Eeeughli5diuu6/N3f/R0f/vCHB/x5+qP3bBEREdNvWvt3vvMd7r//fhoarAHOpZdeyk9+8hO+/e1vF2VxIiIiRdW+A/a8ZKPSyiUwH0S1tbVce+21LFmyhIULF7J169ZSL0lERGTY6jet3e/3M3ny5F7XTZs2DZ+vaKXqIiIig8/zoG0bHNwAdaPAN/yaj86ePZtbb7211MsQEREZtvqNsj3Pw3XdXtel02mSyeSgLkoqmOtC5IB1N462lno1IiJH53nQshEOrrcd82EYmIuIiEjp9Rucv+c97+Gmm25i3bp1RCIRNm7cyM0338wVV1xRrPVJpXDTVqe57WnYvQYSEety3LGr1CsTkROVSkDLlszf9V+hZTNE9tt4sVTcgtpK57pwYB20boa6MeDzl3pFRfOXv/yFbNuZdevW5aajiIiISGn0uz2wYMEC6uvrufPOO9m/fz+TJk3immuu4corryzW+qTcpZPQ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qKioiBYNIOOcPn0aY8aMMfpp5Cxuf2Nx+xuL2z878JidOfiZMQ63vfH4NzBWurY/wzkRERERERGRwVgQjoiIiIiIiMhgDOdEREREREREBrMY/QSIKPWefPJJ1NbWorGxET6fD+PGjUNJSQmee+65Xv/vpk2bsGjRItTU1PT62L179+LZZ5+FqqqIRCJYunQpVq9ejbfffhtnzpzBDTfcMBQvh4iIaFji8Zoot3HOOVEO2bFjB44ePYq77747JT//uuuuw1NPPYVJkyYhGAzii1/8Ih5//HHMnDkzJb+PiIhoOOLxmig3seecKIfde++9aGtrQ1tbG1544QV897vfxdmzZ9Ha2oolS5Zg7dq1uPfee7Fs2TI0NTXhrbfegs/nw4kTJ3DLLbdg+fLlCT9vzJgxeOmll7B8+XLMmDEDW7duhc1mi55kXH755fje974HAGhtbUVnZyfeeOMNbNmyBb/5zW+gKAqWLVuGm2++2YjNQURElJF4vCbKDZxzTpTjFi1ahJdffhkejwezZ8/G5s2bsXXrVmzdurXbY91uN370ox/hhRdewKZNm7rd/8QTT6CsrAyPPvooPvWpT+Gpp55CIBCI3j9nzhxs2bIFGzduhMvlwsaNG/Hxxx/jtddew89+9jP87Gc/w+uvv46jR4+m9DUTERFlGx6viYY/9pwT5biJEycCAIqLi/Hhhx/inXfegcvlSjhI66ZPnw4AGD16dLf7/X4/amtrsWbNGqxZswatra24//778corryA/Pz/6OI/HgzVr1uCuu+7CrFmz8Nprr+H06dP4yle+AgBob2/HiRMnUF1dnaJXTERElH14vCYa/thzTpTjFEUBIPPbCgoK8Mwzz2D16tXw+XzoWpJCf2xPP2f9+vU4fPgwAKCkpASVlZWw2WzRxwQCAdx1111YtWoVPvWpTwEAqqurMXnyZLz44ovYsmULli9fjqlTpw71yyQiIspqPF4TDX/sOSciAMDixYuxbt067N69G06nE+PHj0dDQ0Of/7/NZsOzzz6Lhx9+GOFwGIqi4MILL8SKFSvw61//GgDw4osvora2FqFQKDoMb+PGjVi8eDFuvPFGBAIB1NTUoKKiIiWvkYiIKNvxeE00fLFaOxEREREREZHBOKydiIiIiIiIyGAM50REREREREQGYzgnIiIiIiIiMhjDOREREREREZHBGM6JiIiIiIiIDMZwTkRERERERGQwhnMiIiIiIiIigzGcExERERERERns/wNh3Dmqmikq4wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1008x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(ncols=2, figsize=(14, 5))\n",
    "xmin, xmax = reg_lc_data['Train Size'].min(), reg_lc_data['Train Size'].max()\n",
    "\n",
    "sns.lineplot(data=reg_lc_data,\n",
    "             x='Train Size', y='IC',\n",
    "             hue='Data', ci=95,  ax=axes[0], lw=2)\n",
    "axes[0].set_title('Best Regression Tree')\n",
    "axes[0].set_ylabel('IC')\n",
    "\n",
    "axes[0].xaxis.set_major_formatter(\n",
    "    FuncFormatter(lambda x, _: '{:,.0f}'.format(x)))\n",
    "\n",
    "sns.lineplot(data=clf_lc_data,\n",
    "             x='Train Size',\n",
    "             y='ROC AUC',\n",
    "             hue='Data',\n",
    "             ci=95,\n",
    "             ax=axes[1],\n",
    "             lw=2)\n",
    "axes[1].set_title('Best Classification Tree')\n",
    "axes[1].set_ylabel('ROC AUC')\n",
    "axes[1].xaxis.set_major_formatter(\n",
    "    FuncFormatter(lambda x, _: '{:,.0f}'.format(x)))\n",
    "\n",
    "for i in [0, 1]:\n",
    "    axes[i].tick_params(axis='both', which='major', labelsize=10)\n",
    "    axes[i].tick_params(axis='both', which='minor', labelsize=8)\n",
    "    axes[i].set_xlim(xmin, xmax)\n",
    "\n",
    "fig.suptitle('Learning Curves', fontsize=14)\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.subplots_adjust(top=.9)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Feature Importance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Decision trees can not only be visualized to inspect the decision path for a given feature, but also provide a summary measure of the contribution of each feature to the model fit to the training data. \n",
    "\n",
    "The feature importance captures how much the splits produced by the feature helped to optimize the model's metric used to evaluate the split quality, which in our case is the Gini Impurity index. \n",
    "\n",
    "A feature's importance is computed as the (normalized) total reduction of this metric and takes into account the number of samples affected by a split. Hence, features used earlier in the tree where the nodes tend to contain more samples typically are considered of higher importance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:07.692911Z",
     "start_time": "2020-06-19T13:49:07.688456Z"
    }
   },
   "outputs": [],
   "source": [
    "top_n = 15\n",
    "labels = X.columns.str.replace('_', ' ').str.upper()\n",
    "fi_clf = (pd.Series(gridsearch_clf.best_estimator_.feature_importances_, \n",
    "                    index=labels).sort_values(ascending=False).iloc[:top_n])\n",
    "fi_reg = (pd.Series(gridsearch_reg.best_estimator_.feature_importances_, \n",
    "                    index=labels).sort_values(ascending=False).iloc[:top_n])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-19T13:49:08.104787Z",
     "start_time": "2020-06-19T13:49:07.693889Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAAEdCAYAAAARlcZeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeVhV5d7/8TejmpiImpmigjgUqEf0OKNHHBAEKpzpYM76qywSDVRMTo4oJ0p7TDOzIyKOOGSeOqamJxHSskxLcygFHHBA0Y0KbPbvDx/XEyk4oah8Xtfl9bDve637vtfqXOv7fPf67rWsLBaLBREREREREbln1iW9ABERERERkceFEiwREREREZFiogRLRERERESkmCjBEhERERERKSZKsERERERERIqJEiwREREREZFiYlvSCxARkfsrIiKC1atXF9o/bdo0goKCin3etWvXsnTpUhISEoy2U6dO0b59+wLbVahQgV27dt10jAYNGty0/W9/+xvz5s275zUmJyfj5ORE/fr173ksERERUIIlIvLYGz9+PGFhYQDs2rWL0NBQvvnmG6O/QoUKxT5ncnIyEydO5Nlnny3QfvjwYapUqcKaNWuMNmvroosp3nvvPZo3b16grUyZMsWyzpdffpmFCxcqwRIRkWKjBEtE5DFXoUIFI4mqWLEiAFWrVr1v833wwQfMmzePOnXq3NB36NAhXF1d72j+ihUr3tf1ioiIFCf9BktEpJS7cOECEyZMoE2bNnh6ehIWFsb58+cBSElJoW3btsTHx9OyZUtat27NBx98UOR43377LZ988gldu3a9oe/QoUO4uLgU29otFgtz5szBy8uLZs2aMXjwYH7//Xej//DhwwwZMoSmTZvSqFEj+vXrx8GDBwHw9vYGYODAgcyePZvExMQbyhdDQkKIjY0FrpVahoeH88ILL9CyZUsOHDjAxYsXCQ8Pp1mzZrRt25YJEyZw6dIlY//3338fLy8vGjVqRJ8+fdi9e3exHbuIiDyclGCJiJRyr732Gr/88gtz587l008/5bfffuOtt94y+s+fP8+qVav45JNPmDRpEgsXLmTJkiWFjrdo0SL++te/3rTv8OHDpKenExQUhJeXF2+++SanTp2667UvXryYtWvXMmPGDJYvX07t2rUZMGAAly9fxmKx8Morr/DM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Io+oP8YFAJPJRM2aNYmJiSEjI6PAdf26Tz/9lEGDBpGfn8+RI0dwcnLC0dGRNm3aUK1aNY4cOcLo0aON7d9880369u0LUORcPj4+LFu2DA8PDwASEhI4c+YMI0eOvGHdR48e5dVXX2X9+vUAHD9+nHHjxmE2m7FYLLzzzju4urri7e2Nq6srH3/8sbHvwoULmT59OgcOHCj0vDyusUnxQkTut1KXYAG0atXKSJC++eYbZsyYwbx58wAYM2YM7du3ByAsLIxNmzbRrVu32x7bzc2NuLg4APLz8+nXrx/79++nYcOGxXwUIiJSXP4YF+Da9X/z5s14eHgUuK7/0b/+9S8AIiIi8PPzM2LHrV7OW9RcDg4OjB07llWrVmFvb1/oGGvWrGHRokVkZmYabe+//z5///vf6dy5M//973959913+eCDDwA4deoU586dw8nJCYCtW7dSsWLFW50WERG5C6W+RDArK4saNWrc0G42mzGZTDzzzDN3PfaVK1fIycmhXLly97JEERF5gHJycsjIyHggCcif56pduzZeXl4FErCbqVixIosXLy7QFh4eTocOHYBrMaxMmTJGn4+PD1988QUAhw8fplatWgWqM0REpPiUyjtYycnJhISEkJOTw4EDB4y7VwAzZ85k/vz5ZGRkUKFCBVxcXG5rTCsrKwAOHTpESEgIADY2NvTv35/atWsX/0GIiEixuR4Xzp49i7W1Nb1796Z169akpaUVuK4DuLu7ExERccdzWFlZYbFYipwLrpUQ9uzZk127dhU6VseOHW9ou3536siRI0RHR/M///M/Rp+/vz8TJkwgODiYdevWERAQwKZNm+74GERE5NZKZYL1x/KMI0eO0LdvX7Zt2wYULBF8//33mT59OlOmTDH2LVu2LDk5OQXGy87ONr4pLKyUREREHl7X40JmZiaDBg2iZs2aRt+dXtcLixNly5bl8uXLRc4FYG9vz7Rp0wgLC6N37953dBzJycn84x//YMaMGbi6uhrt1atXB+DEiRN8//33hIaG3tG4IiJy+0p9iWCVKlUK7atevTq5ubkF2urWrcsvv/xCRkYGAFevXmXnzp03/ABaREQePZUqVWLmzJlERkYa1/k71bBhQ5KSkjCZTACcP3+egwcPUrdu3duey93dHX9/f+bPn3/b8yYnJzNlyhQ+/vhjGjVqdEO/n58f06dP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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes= plt.subplots(ncols=2, figsize=(12,4), sharex=True)\n",
    "color = cm.Blues(np.linspace(.4,.9, top_n))\n",
    "fi_clf.sort_values().plot.barh(ax=axes[1], title='Classification Tree', color=color)\n",
    "fi_reg.sort_values().plot.barh(ax=axes[0], title='Regression Tree', color=color)\n",
    "axes[0].set_xlabel('Feature Importance')\n",
    "axes[1].set_xlabel('Feature Importance')\n",
    "fig.suptitle(f'Top {top_n} Features', fontsize=14)\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.subplots_adjust(top=.9);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "343.837px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
